本文檔將介紹如何在CentOS7上安裝prometheus各組件,包括prometheus本身,也有alertmanager
prometheus所在的機器配置要求也不是很高, 正常8c16g1T的機器足夠了,硬盤上需要考慮的長遠一些,你的監控數據要保留多久,我這邊四套k8s集羣(pod數量200+), 加上一些基礎資源比如zookpeer、kafka、redis的監控數據,一個月能用磁盤300G,各位在申請機器時最好申請500G+的,如果你要用prometheus監控你的node節點,最好1T+吧,因爲拉監控的歷史數據,一般都1個月起。
各位請注意,我這邊的數據盤掛載的目錄是/srv; 如果你們的數據盤不是這個,請注意替換
Prometheus
下載並安裝
useradd -r -M -s /sbin/nologin prometheus
mkdir -p /srv/app; mkdir -p /srv/{data,logs,backup}/prometheus
wget -c https://github.com/prometheus/prometheus/releases/download/v2.22.0/prometheus-2.22.0.linux-amd64.tar.gz
tar -zxf prometheus-2.22.0.linux-amd64.tar.gz
mv prometheus-2.22.0.linux-amd64 /srv/app/prometheus
chown -Rf prometheus:prometheus /srv/{app,data,logs,backup}/prometheus
添加服務啓動
vim /etc/systemd/system/prometheus.service
#寫入以下內容
[Unit]
Description=Prometheus
After=network.target alertmanager.target #如果不使用告警模塊alertmanager,可以把alertmanager.target去掉
[Service]
Type=simple
User=prometheus
ExecStart=/srv/app/prometheus/prometheus \
--web.listen-address=localhost:9090 \
--web.external-url=http:///prometheus \
--web.page-title=Prometheus \
--config.file=/srv/app/prometheus/prometheus.yml \
--storage.tsdb.path=/srv/data/prometheus \
--storage.tsdb.retention=90d \
--web.enable-lifecycle
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
啓動參數解析
- --web.listen-address=localhost:9090 監聽地址,建議監聽本地,方便nginx代理+認證
- --web.external-url=http:///prometheus 類似root_url; nginx代理時可以定義location
- --web.page-title=Prometheus web界面的標題,這個根據自己的情況自定義
- --config.file=/srv/app/prometheus/prometheus.yml 配置文件的路徑
- --storage.tsdb.path=/srv/data/prometheus prometheus的監控數據存放目錄
- --storage.tsdb.retention=90d 監控數據保留多少天
- --web.enable-lifecycle 當 Prometheus 有配置文件修改,我們可以採用 Prometheus 提供的熱更新方法實現在不停服務的情況下實現配置文件的重新加載。
設置開機啓動
systemctl enable prometheus
systemctl start prometheus
Alertmanager
下載安裝
useradd -r -M -s /sbin/nologin alertmanager
mkdir -p /srv/{data,logs,backup}/alertmanager
wget -c https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar -zxf alertmanager-0.21.0.linux-amd64.tar.gz
mv alertmanager-0.21.0.linux-amd64 /srv/app/alertmanager
chown -Rf alertmanager:alertmanager /srv/{app,data,logs,backup}/alertmanager
添加服務啓動
vim /etc/systemd/system/alertmanager.service
#寫入以下內容
[Unit]
Description=Alertmanager
After=network.target
[Service]
Type=simple
User=alertmanager
ExecStart=/srv/app/alertmanager/alertmanager \
--web.listen-address=localhost:9093 \
--web.external-url=http://localhost/alertmanager \
--config.file=/srv/app/alertmanager/alertmanager.yml \
--storage.path=/srv/data/alertmanager
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
啓動參數解析
- --web.listen-address=localhost:9093 服務監聽地址
- --web.external-url=http://localhost/alertmanager 服務root_url
- --config.file=/srv/app/alertmanager/alertmanager.yml 服務配置目錄
- --storage.path=/srv/data/alertmanager 服務數據存儲目錄
設置開機自啓
systemctl enable alertmanager
systemctl start alertmanager
看到這裏你會發現並沒有服務配置上的修改就已經把服務給啓動了,其實不受影響的,默認的配置也是可以正常啓動服務的。下一篇再來講解prometheus和alertmanager的配置。
Grafana
數據庫配置
grafana比較特殊,雖然不需要外部數據庫也是能夠啓動的,但是對於講求備份來說是機器不安全和方便的;建議使用MySQL, 安裝MySQL數據庫的文檔見: https://www.cnblogs.com/DevOpsTechLab/p/13581691.html ; 我這裏就不再寫一遍了
創建需要的數據庫以及用戶並授權訪問
注意: 生產環境注意修改高強度密碼, 但是不能有特殊字符,grafana對數據庫密碼特殊字符的支持程度不高(大坑!)
mysql>create database grafana;
mysql>grant all on grafana.* to 'grafana'@'%' identified by '12345678';
grafana下載安裝並配置
下載地址: https://dl.grafana.com/oss/release/grafana-7.2.1.linux-amd64.tar.gz
useradd -r -M -s /sbin/nologin grafana
mkdir -p /srv/{data,logs,backup}/grafana
wget https://dl.grafana.com/oss/release/grafana-7.2.1.linux-amd64.tar.gz
tar -zxvf grafana-7.2.1.linux-amd64.tar.gz
mv grafana-7.2.1 /srv/app/grafana
chown -Rf grafana:grafana /srv/{data,logs,backup}/grafana
修改配置
vim /srv/app/grafana/conf/defaults.ini
#修改以下配置
data = /srv/data/grafana
logs = /srv/logs/grafana
plugins = /srv/data/plugins
root_url = http:///grafana
type = mysql
host = 127.0.0.1:3306
name = grafana
user = grafana
password =12345678
添加服務啓動
vim /etc/systemd/system/grafana.service
#寫入以下內容
[Unit]
Description=Grafana
After=network.target mysqld.target
[Service]
Type=simple
User=grafana
ExecStart=/srv/app/grafana/bin/grafana-server -homepath /srv/app/grafana
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
設置開機自啓
systemctl enable grafana
systemctl start grafana
Nginx代理以上服務
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /grafana/ {
proxy_pass http://localhost:3000/;
#proxy_set_header Authorization ""; #如果訪問prometheus添加了http認證,建議增加這個配置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /prometheus {
proxy_pass http://localhost:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /alertmanager {
proxy_pass http://localhost:9093;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
好了,到此,全部安裝都結束了,配置上的問題,後面的篇章再講。