- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2021-07-13T14:12:49+09:00","default:tanak0to","tanak0to")
#author("2021-07-13T14:13:05+09:00","default:tanak0to","tanak0to")
RIGHT: [[フリーソフトウェアのコンパイル]]
* 参考 [#g1888705]
https://knowledge.sakura.ad.jp/11633/
https://qiita.com/sugitak/items/ff8f5ad845283c5915d2
https://qiita.com/nekoneck/items/fad926b5ee58ad65f47c
- https://knowledge.sakura.ad.jp/11633/
- https://qiita.com/sugitak/items/ff8f5ad845283c5915d2
- https://qiita.com/nekoneck/items/fad926b5ee58ad65f47c
* サーバ環境 [#r21ecae8]
-ubuntu 20.04 LTS
-- 1 CPU
-- 20GB HDD
-- 4GB Mem
-- 192.168.100.101
* サーバインストール [#me2ab5c0]
$ cd src
$ http_proxy=http://192.168.1.10:8080/
$ https_proxy=http://192.168.1.10:8080/
$ export http_proxy
$ export https_proxy
$ wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz
$ cd /usr/local
$ sudo tar xvzf ~jse03/src/prometheus-2.27.1.linux-amd64.tar.gz
$ sudo mv prometheus-2.27.1.linux-amd64 prometheus
** ユーザと必要なディレクトリの作成 [#ff1903ef]
$ sudo mkdir /etc/prometheus
$ sudo cp -a prometheus/prometheus.yml /etc/prometheus
$ sudo useradd -U -s /sbin/nologin -M -d / prometheus
$ sudo mkdir -p /var/lib/prometheus
$ sudo chown prometheus:prometheus /var/lib/prometheus
** サーバの自動起動設定 [#ra2f72f6]
$ sudo vi /etc/systemd/system/prometheus.service
以下のファイルを新規作成
[Unit]
Description=Prometheus - Monitoring system and time series database
[Service]
Restart=always
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/metrics
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
systemd リロード
$ sudo systemctl daemon-reload
** サーバの設定 [#ia122ec6]
/etc/prometheus/prometheus.yml を編集する
global:
scrape_interval: 60s # 1分ごとにデータ取得
evaluation_interval: 60s # 1分ごとに評価
** 監視対象は以下で設定する. [#h5c3a585]
scrape_configs:
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
# - job_name: '<ジョブ名>'
# static_configs:
# - tagets: ['<対象のホスト名>:<ポート番号9100>']
** サーバ起動 [#t8d2d1a7]
$ sudo systemctl start prometheus
** ブラウザでアクセス [#z401d726]
http://192.168.100.101:9090/
** サーバのアクセス制限 [#raf702b0]
Prometheus のサーバには,接続元の制限やユーザ認証などのセキュリティ制限を行う仕組みが備わっていない.
アクセス制限をするのであれば,nginx などのリバースプロキシを利用するようにというのが公式見解だ.
なので,ufw でアクセス元の制限をする.
(ここでは,ポート 9090 へのアクセスを 192.168.1.100 からのみにしている.
その他の接続は,全て allow にしている)
$ sudo ufw default allow
$ sudo ufw allow from 192.168.1.100 to any port 9090
$ sudo ufw deny 9090
$ sudo ufw enable
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 8080 ALLOW IN Anywhere
[ 3] 8081 ALLOW IN Anywhere
[ 4] 9090 ALLOW IN 192.168.1.100
[ 5] 9090 DENY IN Anywhere
[ 6] 22 (v6) ALLOW IN Anywhere (v6)
[ 7] 8080 (v6) ALLOW IN Anywhere (v6)
[ 8] 8081 (v6) ALLOW IN Anywhere (v6)
[ 9] 9090 (v6) DENY IN Anywhere (v6)
他の接続も追加するなら
$ sudo ufw allow port ssh
----
* クライアントエージェントインストール [#w791b867]
とりあえずターゲットは mail サーバ(192.168.1.2)
$ cd src
$ http_proxy=http://192.168.1.10:8080/
$ https_proxy=http://192.168.1.10:8080/
$ export http_proxy
$ export https_proxy
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
$ cd ~/build
$ tar xvfz ../src/node_exporter-1.1.2.linux-amd64.tar.gz
$ cd node_exporter-1.1.2.linux-amd64
$ sudo mkdir -p /usr/local/bin
$ sudo cp node_exporter /usr/local/bin/
** ユーザ作成 [#z7e2e578]
$ sudo useradd -U -s /sbin/nologin -M -d / prometheus
** エージェントの自動起動設定 [#x8569057]
$ sudo vi /etc/systemd/system/prometheus-node-exporter.service
以下のファイルを新規作成
[Unit]
Description=node_exporter for Prometheus
[Service]
Restart=always
User=prometheus
ExecStart=/usr/local/bin/node_exporter # <起動オプション>
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
起動オプションは
https://github.com/prometheus/node_exporter
を参考にする.
デフォルトで取得される統計情報の中で不要なものがあれば、「–no-collector.<名前>」オプションを指定すれば取得対象から除外できる。
また、デフォルトでは収集されない情報を取得対象に加えたい場合は「–collector.<名前>」オプションを指定すれば良い。
init.d のクライアントにインストールするなら以下を参考
https://gist.github.com/eloo/a06d7c70ff2a841b7bb98cd322b851b9
https://gist.github.com/mancubus77/447281619be3731461b73dd4a18593c5
systemd リロード
$ sudo systemctl daemon-reload
** Linux エージェント起動(node-exporter) [#o786a496]
$ sudo systemctl start prometheus-node-exporter
** サーバに監視追加 [#w48745a0]
/etc/prometheus/prometheus.yml を編集する
# - job_name: '<ジョブ名>'
# static_configs:
# - tagets: ['<対象のホスト名>:<ポート番号9100>']
- job_name: 'mail'
static_configs:
- targets: ['192.168.1.2:9100']
** サーバ再起動 [#ub59d3d7]
$ sudo systemctl restart prometheus
-----
* Grafana で可視化 [#m8d70939]
** インストール [#h4ce74f6]
参考
https://grafana.com/docs/grafana/latest/installation/debian/#install-from-apt-repository
apt リポジトリ
https://packages.grafana.com/oss/deb stable main
$ sudo apt-get install -y apt-transport-https
$ sudo apt-get install -y software-properties-common wget
$ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
$ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
$ sudo apt-get update
$ sudo apt-get install grafana
インストールされるパッケージ内容
- Installs binary to /usr/sbin/grafana-server
- Installs Init.d script to /etc/init.d/grafana-server
- Creates default file (environment vars) to /etc/default/grafana-server
- Installs configuration file to /etc/grafana/grafana.ini
- Installs systemd service (if systemd is available) name grafana-server.service
- The default configuration sets the log file at /var/log/grafana/grafana.log
- The default configuration specifies a SQLite3 db at /var/lib/grafana/grafana.db
- Installs HTML/JS/CSS and other Grafana files at /usr/share/grafana
** サーバ起動 [#x90c56ba]
$ sudo systemctl daemon-reload
$ sudo systemctl start grafana-server
$ sudo systemctl status grafana-server
$ sudo systemctl enable grafana-server.service
TCP ポート 3000番でサーバが立ち上がる.
パスワードはいつものサーバ用の物をつける
* Grafana 設定 [#keb63f6e]
Web コンソールにログイン後
** データソース追加 [#x1baf976]
左側歯車アイコン > [Data Sources] > [Add data sources]> Prometheus > [Select]
- URL: http://localhost:9090/
- Access: Server(default)
> [Save & Test]
** ダッシュボード作成 [#p5b55222]
左側 + アイコン > [Dashboard]
----
* Alertmanager インストール [#v83dba41]
** Prometheus に Alert ルール追加 [#ee50331f]
/etc/prometheus/prometheus.yml に追記
global:
rule_files:
- "alert_rules.yml"
/etc/prometheus/alert_rules.yml を作成
groups:
- name: target_status
rules:
- alert: scrape_failed
expr: up == 0
for: 5m
labels:
severity: error
type: node
annotations:
summary: monitoring target failed.
** AlertManger のインストール [#vb375e37]
$ cd src
$ http_proxy=http://192.168.1.10:8080/
$ https_proxy=http://192.168.1.10:8080/
$ export http_proxy
$ export https_proxy
$ wget https://github.com/prometheus/alertmanager/releases/download/v0.22.2/alertmanager-0.22.2.linux-amd64.tar.gz
$ cd ~/build
$ tar xvzf ~jse03/src/alertmanager-0.22.2.linux-amd64.tar.gz
$ cd alertmanager-0.22.2.linux-amd64
$ sudo cp alertmanager /usr/local/bin
$ sudo cp amtool /usr/local/bin
** AlertManger 自動起動の設定 [#s1005aa0]
$ sudo mkdir -p /var/lib/prometheus/alertmanager
$ sudo chown prometheus:prometheus /var/lib/prometheus/alertmanager
$ sudo vi /etc/systemd/system/prometheus-alert-manager.service
新規作成
[Unit]
Description=Alertmanager for Prometheus
[Service]
Restart=always
User=prometheus
ExecStart=/usr/local/bin/alertmanager --config.file=/etc/prometheus/alertmanager.yml --storage.path=/var/lib/prometheus/alertmanager
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
systemd リロード
$ sudo systemctl daemon-reload
** AlertManger 設定 [#r46a8ddd]
https://knowledge.sakura.ad.jp/11635/
新規作成もしくはソースからコピー
$ sudo cp ~/build/alertmanager-0.22.2.linux-amd64/alertmanager.yml /etc/prometheus/alertmanager.yml
$ sudo vi /etc/prometheus/alertmanager.yml
global:
resolve_timeout: 10m
smtp_smarthost: '<SMTPサーバーのホスト>:<ポート>'
smtp_from: '<From:行で使用するメールアドレス>'
smtp_auth_username: '<SMTP AUTHで使用するユーザー名>'
smtp_auth_password: '<SMTP AUTHで使用するパスワード>'
smtp_require_tls: '<TLSを使用する場合はtrue、使用しない場合はfalse>'
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_intercal: 1h
receiver: 'default'
receivers:
- name: <名前>
email_configs:
- to: '<メールアドレス>'
途中で読み込んでいるテンプレートは,alertmanagerのGitHubリポジトリ
https://github.com/prometheus/alertmanager/tree/master/template
にサンプル(default.tmpl)があるので,
これらを /etc/prometheus/alertmanager_templates/*.tmpl にコピーして利用すると良い.
*** AlertManger 起動 [#wbc55f58]
$ sudo systemctl --now enable prometheus-alert-manager
*** 動作確認 [#qa95c9bc]
http://192.168.100.101:9093
** Prometheus 側の設定 [#z5f826b1]
/etc/prometheus/prometheus.yml に以下の行を設定する
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093