Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More new stuff #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.yml linguist-detectable
56 changes: 56 additions & 0 deletions ansible/__roles/__k8s/grafana/tasks/datasources.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
- name: Add prometheus to grafana
loop:
- home
uri:
url: "http://{{ inventory_hostname }}:{{ port_definition[ 'grafana_server' ] }}/api/datasources"
method: POST
user: root
password: "{{ user_password }}"
body:
name: "prometheus-{{ item }}"
type: "prometheus"
url: "http://prometheus.{{ item }}.localhost:{{ port_definition[ 'prometheus_server' ] }}"
access: "proxy"
force_basic_auth: yes
status_code: 200, 409
body_format: json

- name: Add prometheus delta cached (trickster) to grafana
loop:
- home
uri:
url: "http://{{ inventory_hostname }}:{{ port_definition[ 'grafana_server' ] }}/api/datasources"
method: POST
user: root
password: "{{ user_password }}"
body:
name: "prometheus-cached-{{ item }}"
type: "prometheus"
url: "http://prometheus.{{ item }}.localhost:{{ port_definition[ 'trickster' ] }}"
access: "proxy"
force_basic_auth: yes
status_code: 200, 409
body_format: json

- name: Add thanos to grafana
loop:
- {name: thanos, port: 10904, customQueryParameters: "max_source_resolution=1h&partial_response=true"}
- {name: thanos-cached, port: 8000, customQueryParameters: "max_source_resolution=1h&partial_response=true"}
- {name: thanos-cached-raw, port: 8000, customQueryParameters: "max_source_resolution=0"}
- {name: thanos-objectstorage-only, port: 10911, customQueryParameters: "max_source_resolution=1h&partial_response=true"}
uri:
url: "http://{{ inventory_hostname }}:{{ port_definition[ 'grafana_server' ] }}/api/datasources"
method: POST
user: root
password: "{{ user_password }}"
body:
type: prometheus
name: "{{ item.name }}"
access: "proxy"
url: "http://thanos.nas.localhost:{{ item.port }}"
jsonData:
customQueryParameters: "{{ item.customQueryParameters }}"
force_basic_auth: yes
status_code: 200, 409
body_format: json

102 changes: 102 additions & 0 deletions ansible/__roles/__k8s/grafana/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
- name: Install deps
become: True
package:
name: "{{ item }}"
state: present
loop:
- python3-docker

- name: Checking grafana directory
become: True
file:
path: /opt/grafana/data
state: directory

- name: Docker run grafana-renderer
docker_container:
image: "grafana/grafana-image-renderer:{{ grafana_image_renderer_version }}"
hostname: "{{ inventory_hostname }}"
name: grafana-renderer
state: started
restart_policy: unless-stopped
ports:
- "0.0.0.0:{{ port_definition[ 'grafana_renderer' ] }}:{{ port_definition[ 'grafana_renderer' ] }}"
pull: true
recreate: true
env:
IGNORE_HTTPS_ERRORS: 'true'
ENABLE_METRICS: 'true'
# RENDERING_ARGS: --no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage,--disable-accelerated-2d-canvas,--disable-gpu,--window-size=1280x720

- name: Docker run grafana
docker_container:
image: "grafana/grafana:{{ grafana_version }}"
hostname: "{{ inventory_hostname }}"
name: grafana
state: started
restart_policy: unless-stopped
ports:
- "0.0.0.0:{{ port_definition[ 'grafana_server' ] }}:{{ port_definition[ 'grafana_server' ] }}"
pull: true
recreate: true
env:
GF_INSTALL_PLUGINS: grafana-piechart-panel,neocat-cal-heatmap-panel
GF_AUTH_ANONYMOUS_ENABLED: 'false'
GF_AUTH_ANONYMOUS_ORG_NAME: 'AK95'
GF_AUTH_ANONYMOUS_ORG_ROLE: 'Viewer'
GF_SECURITY_ADMIN_USER: root
GF_SECURITY_ADMIN_PASSWORD: "{{ user_password }}"
GF_SERVER_DOMAIN: grafana.nas.localhost
GF_SERVER_ENABLE_GZIP: 'true'
GF_RENDERING_SERVER_URL: "http://{{ inventory_hostname }}:8081/render"
GF_RENDERING_CALLBACK_URL: "renderer.nas.localhost"
volumes:
- /opt/grafana/data:/var/lib/grafana

- name: "Wait for grafana #1"
wait_for:
host: "{{ inventory_hostname }}"
port: "{{ port_definition[ 'grafana_server' ] }}"
delay: 5
sleep: 5
timeout: 60
active_connection_states:
- ESTABLISHED

- name: Rename organisation
uri:
url: "http://{{ inventory_hostname }}:{{ port_definition[ 'grafana_server' ] }}/api/orgs/1"
method: PUT
user: root
password: "{{ user_password }}"
body:
name: "AK95"
force_basic_auth: yes
status_code: 200
body_format: json

- include_role:
name: setup_grafana
tasks_from: datasources.yml

- name: Reload grafana config
docker_container:
name: grafana
state: stopped
force_kill: True
kill_signal: HUP

- name: "Wait for grafana #2"
wait_for:
host: "{{ inventory_hostname }}"
port: "{{ port_definition[ 'grafana_server' ] }}"
delay: 5
sleep: 5
timeout: 60
active_connection_states:
- ESTABLISHED

- name: "Wait for grafana #3"
uri:
timeout: 120
url: http://{{ inventory_hostname }}:{{ port_definition[ 'grafana_server' ] }}/
50 changes: 50 additions & 0 deletions ansible/__roles/__k8s/karma/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
- name: Install deps
become: True
package:
name: "{{ item }}"
state: present
loop:
- python3-docker

- name: Create root karma folder
become: True
file:
path: /opt/karma/
state: directory

- name: Copy karma config
template:
src: config.yml.j2
dest: /opt/karma/config.yml
mode: 0644

- name: Run karma
docker_container:
image: "lmierzwa/karma:{{ karma_version }}"
hostname: "{{ inventory_hostname }}"
name: karma
state: started
restart_policy: unless-stopped
volumes:
- "/opt/karma:/karmaui"
ports:
- "0.0.0.0:{{ port_definition[ 'prometheus_karma' ] }}:{{ port_definition[ 'prometheus_karma' ] }}"
pull: true
recreate: true
command:
- '--config.file /karmaui/config.yml'

- name: "Wait for karma #1"
wait_for:
host: "{{ inventory_hostname }}"
port: "{{ port_definition[ 'prometheus_karma' ] }}"
delay: 5
sleep: 3
timeout: 1200
active_connection_states:
- ESTABLISHED

- name: "Wait for karma #2"
uri:
timeout: 120
url: "http://{{ inventory_hostname }}:{{ port_definition[ 'prometheus_karma' ] }}/"
104 changes: 104 additions & 0 deletions ansible/__roles/__k8s/karma/templates/config.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
alertmanager:
interval: 15s
servers:
{% for instance in ['nas'] %}
- name: "prometheus-{{ instance }}"
uri: "http://prometheus.{{ instance }}.localhost:{{ port_definition[ 'prometheus_alertmanager' ] }}"
proxy: true
timeout: 20s
{% endfor %}
- name: "thanos-globalview"
uri: "http://thanos.nas.localhost:{{ port_definition[ 'prometheus_alertmanager' ] }}"
proxy: true
timeout: 20s

karma:
name: Karma

ui:
refresh: 30s
hideFiltersWhenIdle: False
colorTitlebar: False
minimalGroupWidth: 500
alertsPerGroup: 5
collapseGroups: collapsedOnMobile
theme: dark
multiGridLabel: severity

listen:
address: "0.0.0.0"
port: {{ port_definition[ 'prometheus_karma' ] }}
prefix: /

receivers:
strip:
- opsgenie
- pagerduty

labels:
color:
unique:
- "@alertmanager"
- "@receiver"
- "@cluster"
- alertname
- code
- env
- instance
- job
- level
- method
- origin
- path
- server
- service_name
- service_number
- stack
- status
- task_id
- type
custom:
severity:
- value: warning
color: "#264653"
- value: low
color: "#2a9d8f"
- value: medium
color: "#e9c46a"
- value: high
color: "#f4a261"
- value: critical
color: "#e76f51"
strip:
- host

annotations:
strip:
- identifier

grid:
sorting:
order: label
reverse: false
label: severity
customValues:
labels:
severity:
critical: 1
high: 2
medium: 3
low: 4
warning: 5

alertAcknowledgement:
enabled: True
duration: 20m0s
author: Karma
commentPrefix: Someone is fixing it.

silences:
comments:
linkDetect:
rules:
- regex: "((T)-[0-9]+)"
uriTemplate: https://jira.nas.localhost/browse/$1
Loading