User Tools

Site Tools


сервис_prometheus

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
сервис_prometheus [2021/04/20 10:41]
val
сервис_prometheus [2025/04/18 09:21] (current)
val [prometheus-alertmanager]
Line 4: Line 4:
   * [[https://​habr.com/​ru/​company/​southbridge/​blog/​455290/​|Полное руководство по Prometheus в 2019 году]]   * [[https://​habr.com/​ru/​company/​southbridge/​blog/​455290/​|Полное руководство по Prometheus в 2019 году]]
   * [[https://​www.shellhacks.com/​ru/​prometheus-delete-time-series-metrics/​|Prometheus:​ Удаление Метрик Временных Рядов]]   * [[https://​www.shellhacks.com/​ru/​prometheus-delete-time-series-metrics/​|Prometheus:​ Удаление Метрик Временных Рядов]]
 +  * [[https://​habr.com/​ru/​companies/​tochka/​articles/​683608/​|Человеческим языком про метрики]]
 +  * [[https://​selectel.ru/​blog/​tutorials/​monitoring-in-k8s-with-prometheus/​|Мониторинг в K8s с помощью Prometheus]]
  
-===== Установка в Debian ​10 ===== +===== Установка в Debian/​Ubuntu ​=====
- +
-  * [[Сервис MTA#​Установка и настройка MTA на обработку почты домена hostname]]+
  
 <​code>​ <​code>​
 # apt install prometheus # apt install prometheus
 +
 +# less /​etc/​prometheus/​prometheus.yml
 +</​code><​code>​
 +...
 +global:
 +  scrape_interval: ​    15s
 +...
 </​code>​ </​code>​
  
Line 23: Line 30:
 ==== Подключение ==== ==== Подключение ====
  
-  ​* [[http://server.corpX.un:9090/targets]] +!!! Ссылки содержат DNS имена 
-  * [[http://192.168.X.10:9090/metrics]] + 
-  * [[http://10.5.N.100+X:9090/graph]]+  ​* [[http://192.168.X.10:9090/]] 
 +  * [[http://server.corpX.un:9090/]] 
 +  * [[http://server:9090/classic/​targets]]
  
 ==== Источники данных ==== ==== Источники данных ====
Line 32: Line 41:
 ===== prometheus-alertmanager ===== ===== prometheus-alertmanager =====
  
-  * [[https://medium.com/devops-dudes/prometheus-alerting-with-alertmanager-e1bbba8e6a8e|Prometheus ​Alerting with AlertManager]] +  * [[https://samber.github.io/awesome-prometheus-alerts/​rules|Awesome ​Prometheus ​alerts]] 
-  * [[https://alex.dzyoba.com/blog/​prometheus-alerts/​|Prometheus alerts examples]] +  * [[https://github.com/samber/awesome-prometheus-alerts/​tree/master/dist/rules]] 
-  * [[https://www.digitalocean.com/community/​tutorials/​how-to-use-alertmanager-and-blackbox-exporter-to-monitor-your-web-server-on-ubuntu-16-04|How To Use Alertmanager And Blackbox Exporter To Monitor Your Web Server On Ubuntu 16.04]] + 
-  * [[https://​awesome-prometheus-alerts.grep.to/​|Awesome Prometheus alerts]]+  * [[Сервис MTA#​Установка и настройка MTA на обработку почты домена hostname]]
  
 <​code>​ <​code>​
Line 42: Line 51:
 # cat /​etc/​prometheus/​alertmanager.yml # cat /​etc/​prometheus/​alertmanager.yml
 </​code><​code>​ </​code><​code>​
-... 
 global: global:
-  smtp_smarthost:​ 'localhost:25' +  smtp_smarthost:​ 'server.corpX.un:25' 
-  smtp_from: 'prometheus@server.corpX.un'​+  smtp_from: 'alertmanager@corpX.un'​
   smtp_require_tls:​ false   smtp_require_tls:​ false
-... +templates:​ 
-  ​# A default receiver+- '/​etc/​prometheus/​alertmanager_templates/​*.tmpl'​ 
 + 
 +route: 
 +  group_wait: 30s 
 +  group_interval:​ 5m 
 +  ​repeat_interval:​ 3h
   receiver: team-X-mails   receiver: team-X-mails
-...+
 receivers: receivers:
 - name: '​team-X-mails'​ - name: '​team-X-mails'​
   email_configs:​   email_configs:​
-#  ​- to: '​student@corpX.un' +  ​- to: '​student@corpX.un'​
-#  - to: '​userX@isp.un'+
     send_resolved:​ true     send_resolved:​ true
-... 
 </​code><​code>​ </​code><​code>​
 +# service prometheus-alertmanager restart
 +
 # cat /​etc/​prometheus/​first_rules.yml # cat /​etc/​prometheus/​first_rules.yml
 </​code><​code>​ </​code><​code>​
Line 82: Line 95:
  
   - alert: CriticalTraffic   - alert: CriticalTraffic
-    expr: rate(if_in_octets{instance="​router"​}[1m])>​125000+    expr: rate(ifInOctets{instance="​router"​}[1m])>​125000
     for: 1m     for: 1m
     labels:     labels:
Line 114: Line 127:
 ... ...
 </​code>​ </​code>​
 +
 +  * [[http://​server.corpX.un:​9090/​classic/​alerts]]
 ===== Exporters ===== ===== Exporters =====
  
 ==== prometheus-node-exporter ==== ==== prometheus-node-exporter ====
  
-  * В Debian ставится как зависимость к пакету prometheus и добавлен в конфигурацию+  * В Debian/​Ubuntu ​ставится как зависимость к пакету prometheus и добавлен в конфигурацию
   * [[http://​server.corpX.un:​9100/​metrics]]   * [[http://​server.corpX.un:​9100/​metrics]]
  
Line 135: Line 150:
 == node_network_receive_bytes_total == == node_network_receive_bytes_total ==
 <​code>​ <​code>​
-$ cat /​sys/​class/​net/​eth1/​statistics/​rx_bytes+$ cat /​sys/​class/​net/​eth0/​statistics/​rx_bytes 
 +  или 
 +$ cat /​sys/​class/​net/​bond0/​statistics/​rx_bytes
  
 # TYPE node_network_receive_bytes_total counter # TYPE node_network_receive_bytes_total counter
-node_network_receive_bytes_total{device="​eth1"}+node_network_receive_bytes_total{device="​bond0"}
 </​code>​ </​code>​
  
Line 157: Line 174:
 8*rate(node_network_receive_bytes_total[1m]) 8*rate(node_network_receive_bytes_total[1m])
  
-8*rate(node_network_receive_bytes_total{device="​eth1"​}[1m])+8*rate(node_network_receive_bytes_total{device="​bond0"​}[1m])
  
-8*rate(node_network_receive_bytes_total{device="​eth1",​instance="​localhost:​9100",​job="​node"​}[1m])+8*rate(node_network_receive_bytes_total{device="​eth0",​instance="​localhost:​9100",​job="​node"​}[1m])
 </​code>​ </​code>​
  
Line 187: Line 204:
 # cat /​etc/​prometheus/​prometheus.yml # cat /​etc/​prometheus/​prometheus.yml
 </​code><​code>​ </​code><​code>​
 +...
   - job_name: check_http   - job_name: check_http
     metrics_path:​ /probe     metrics_path:​ /probe
Line 193: Line 211:
     static_configs:​     static_configs:​
       - targets:       - targets:
-        - http://​val.bmstu.ru+        - https://​val.bmstu.ru
         - https://​ya.ru         - https://​ya.ru
     relabel_configs:​     relabel_configs:​
Line 233: Line 251:
 === Пример использования file-based service discovery и сервиса ping === === Пример использования file-based service discovery и сервиса ping ===
  
-  * [[https://​www.robustperception.io/​icmp-pings-with-the-blackbox-exporter|ICMP Pings with the Blackbox exporter]], [[https://​github.com/​prometheus/​blackbox_exporter|github blackbox_exporter]],​ [[POSIX capabilities]] или [[Управление ядром и модулями в Linux#​Переменные ядра]]+  * [[https://​www.robustperception.io/​icmp-pings-with-the-blackbox-exporter|ICMP Pings with the Blackbox exporter]], [[https://​github.com/​prometheus/​blackbox_exporter?​tab=readme-ov-file#​permissions|github blackbox_exporter ​permissions]], [[POSIX capabilities]] или [[Управление ядром и модулями в Linux#​Переменные ядра]]
  
 <​code>​ <​code>​
Line 264: Line 282:
 </​code><​code>​ </​code><​code>​
 # cat /​etc/​prometheus/​switchs.yml # cat /​etc/​prometheus/​switchs.yml
 +</​code><​code>​
 - targets: - targets:
   - switch1   - switch1
Line 275: Line 294:
   * [[https://​blogspot.sysadm.kz/​2018/​07/​grafana-prometheus-cisco-snmp.html|Grafana + Prometheus мониторинг траффика Cisco SNMP]]   * [[https://​blogspot.sysadm.kz/​2018/​07/​grafana-prometheus-cisco-snmp.html|Grafana + Prometheus мониторинг траффика Cisco SNMP]]
   * [[https://​medium.com/​@openmohan/​snmp-monitoring-and-easing-it-with-prometheus-b157c0a42c0c|SNMP monitoring and easing it with Prometheus]]   * [[https://​medium.com/​@openmohan/​snmp-monitoring-and-easing-it-with-prometheus-b157c0a42c0c|SNMP monitoring and easing it with Prometheus]]
 +  * [[https://​grafana.com/​blog/​2022/​02/​01/​an-advanced-guide-to-network-monitoring-with-grafana-and-prometheus/​|An advanced guide to network monitoring with Grafana and Prometheus]]
  
 <​code>​ <​code>​
 # apt install prometheus-snmp-exporter # apt install prometheus-snmp-exporter
 +</​code>​
  
 +=== Создание файла конфигурации "​вручную"​ ===
 +
 +<​code>​
 # cat /​etc/​prometheus/​snmp.yml # cat /​etc/​prometheus/​snmp.yml
 </​code><​code>​ </​code><​code>​
-#if_mib  # по умолчанию,​ позволяет не указывать module в http запросе +auths
-snmp_in_out_octets:​ +  ​public_v2:
-  version: 2 +
-  ​auth:+
     community: public     community: public
-  walk+    version: 2 
-  - 1.3.6.1.2.1.2.2.1.10 +modules
-  - 1.3.6.1.2.1.2.2.1.16 +  ​if_mib: 
-  - 1.3.6.1.2.1.2.2.1.2 +    walk: 
-  metrics: +    ​- 1.3.6.1.2.1.2.2.1.10 
-  - name: if_in_octets +    - 1.3.6.1.2.1.2.2.1.16 
-    oid: 1.3.6.1.2.1.2.2.1.10 +    - 1.3.6.1.2.1.2.2.1.2 
-    type: counter +    metrics: 
-    indexes: +    - name: ifInOctets 
-    - labelname: ifIndex +      oid: 1.3.6.1.2.1.2.2.1.10 
-      type: Integer +      type: counter 
-    lookups: +      indexes: 
-    - labels: +      - labelname: ifIndex 
-      - ifIndex +        type: Integer 
-      labelname: ifDescr +      lookups: 
-      oid: 1.3.6.1.2.1.2.2.1.2 +      - labels: 
-      type: DisplayString +        - ifIndex 
-  - name: if_out_octets +        labelname: ifDescr 
-    oid: 1.3.6.1.2.1.2.2.1.16 +        oid: 1.3.6.1.2.1.2.2.1.2 
-    type: counter +        type: DisplayString 
-    indexes: +    - name: ifOutOctets 
-    - labelname: ifIndex +      oid: 1.3.6.1.2.1.2.2.1.16 
-      type: Integer +      type: counter 
-    lookups: +      indexes: 
-    - labels: +      - labelname: ifIndex 
-      - ifIndex +        type: Integer 
-      labelname: ifDescr +      lookups: 
-      oid: 1.3.6.1.2.1.2.2.1.2 +      - labels: 
-      type: DisplayString +        - ifIndex 
-</​code><​code>​+        labelname: ifDescr 
 +        oid: 1.3.6.1.2.1.2.2.1.2 
 +        type: DisplayString 
 +</​code>​ 
 + 
 +=== Создание файла конфигурации через "​generator"​ === 
 + 
 +<​code>​ 
 +# cp /​usr/​share/​doc/​prometheus-snmp-exporter/​examples/​generator.yml . 
 +  может понадобиться удалить все modules, кроме if_mib 
 + 
 +# prometheus-snmp-generator generate 
 + 
 +# cp snmp.yml /​etc/​prometheus/​snmp.yml 
 +</​code>​ 
 + 
 + 
 +=== Проверка конфигурации и перезапуск prometheus-snmp-exporter === 
 +<​code>​ 
 +# prometheus-snmp-exporter --dry-run 
 # service prometheus-snmp-exporter restart # service prometheus-snmp-exporter restart
 </​code>​ </​code>​
 +
 +=== Примеры использования ===
  
   * [[http://​server.corpX.un:​9116/​]]   * [[http://​server.corpX.un:​9116/​]]
  
 <​code>​ <​code>​
-# curl --noproxy 127.0.0.1 ​'​http://​127.0.0.1:​9116/​snmp?​target=router&​module=snmp_in_out_octets'+# curl '​http://​127.0.0.1:​9116/​snmp?​target=router'​
 </​code><​code>​ </​code><​code>​
 # cat /​etc/​prometheus/​prometheus.yml # cat /​etc/​prometheus/​prometheus.yml
Line 332: Line 376:
         - router         - router
     metrics_path:​ /snmp     metrics_path:​ /snmp
-    params: 
-      module: [snmp_in_out_octets] 
     relabel_configs:​     relabel_configs:​
       - source_labels:​ [__address__]       - source_labels:​ [__address__]
Line 346: Line 388:
  
 <​code>​ <​code>​
-rate(if_in_octets{ifDescr="​FastEthernet1/​1",​ifIndex="​3",​instance="​router",​job="​snmp"​}[1m])+rate(ifInOctets{ifDescr="​FastEthernet0/0",​ifIndex="​1",instance="​router",​job="​snmp"​}[1m]) 
 +  или 
 +rate(ifOutOctets{ifIndex="​5",​instance="​router",​job="​snmp"​}[1m])
  
-8*rate(if_in_octets{ifDescr="​FastEthernet1/1",​instance="​router"​}[1m])+8*rate(ifInOctets{ifDescr="​FastEthernet0/0",​instance="​router"​}[1m]) 
 +  или 
 +8*rate(ifOutOctets{ifDescr="​Port-channel1",​instance="​router"​}[1m])
 </​code>​ </​code>​
  
Line 360: Line 406:
 </​code><​code>​ </​code><​code>​
 ... ...
-  - job_name: 'Pushgateway'+  - job_name: 'pushgateway'
     honor_labels:​ true     honor_labels:​ true
     static_configs:​     static_configs:​
Line 388: Line 434:
 </​code><​code>​ </​code><​code>​
 ip_dhcp_binding{dhcp_server="​router",​job="​cisco_dhcp",​net="​192.168"​} ip_dhcp_binding{dhcp_server="​router",​job="​cisco_dhcp",​net="​192.168"​}
 +</​code><​code>​
 +# crontab -l
 +</​code><​code>​
 +* * * * * /​root/​ip_dhcp_binding.sh
 </​code>​ </​code>​
сервис_prometheus.1618904489.txt.gz · Last modified: 2021/04/20 10:41 by val