1. Zabbix介紹與安裝部署

1 Zabbix使用場(chǎng)景及系統(tǒng)概述

Zabbix是一個(gè)企業(yè)級(jí)解決方案电爹,支持實(shí)時(shí)監(jiān)控?cái)?shù)千臺(tái)服務(wù)器恢筝,虛擬機(jī)和網(wǎng)絡(luò)設(shè)備哀卫,采集百萬級(jí)監(jiān)控指標(biāo),適用于任何IT基礎(chǔ)架構(gòu)撬槽、服務(wù)此改、應(yīng)用程序和資源的解決方案

1.1 Zabbix使用場(chǎng)景

圖片.png

1.2 Zabbix系統(tǒng)概述

1.2.1 數(shù)據(jù)采集

周期性時(shí)序數(shù)據(jù)

主機(jī)/對(duì)象:服務(wù)器、路由器侄柔、交換機(jī)共啃、存儲(chǔ)、防火墻暂题、IP移剪、PORT、URL薪者、自定義監(jiān)控對(duì)象... 
采集目標(biāo):監(jiān)控項(xiàng)(k:v)纵苛,指標(biāo)數(shù)據(jù)(metrics data)
比如:  load average: 0.00, 0.02, 0.00, 一般超過5就會(huì)很慢了, 需要定義閾值5

1.2.2 數(shù)據(jù)存儲(chǔ)

監(jiān)控?cái)?shù)據(jù)存儲(chǔ)系統(tǒng)

SQL: MySQL/MariaDB(Zabbix) 
NoSQL:Redis(Open-falcon) 
rrd: Round Robin Database(Cacti)

1.2.3 數(shù)據(jù)類型

歷史數(shù)據(jù): 每個(gè)監(jiān)控項(xiàng)采集到的每個(gè)監(jiān)控值 
趨勢(shì)數(shù)據(jù): 趨勢(shì)表里主要保留某個(gè)監(jiān)控項(xiàng)一個(gè)小時(shí)內(nèi)歷史數(shù)據(jù)的最大值、最小值和平均值以及該監(jiān)控項(xiàng)一個(gè)小時(shí)內(nèi)所采集到的數(shù)據(jù)個(gè)數(shù)言津。

1.2.4 閾值

可按照預(yù)定義的閾值等級(jí)實(shí)現(xiàn)分層報(bào)警

1.2.5 告警機(jī)制

郵件,短信,微信,語音
故障自治愈: 比如java內(nèi)存溢出, 可以自動(dòng)重啟java服務(wù)
如果日志文件導(dǎo)致磁盤空間占滿, 不能直接rm, 因?yàn)闊o法立即釋放空間, 需要用echo > 或者 >, 或者cat /dev/null將文件內(nèi)容清空, 然后再刪除

1.3 Zabbix核心任務(wù)

1.3.1 數(shù)據(jù)采集

數(shù)據(jù)采集方式:zabbix-server入篮,zabbix-proxy硬纤,zabbix-agent

Agentless:SNMP,Telnet,ssh, IPMI, JMX
Agent:zabbix agent

1.3.2 數(shù)據(jù)存儲(chǔ)

zabbix database

1.3.3 數(shù)據(jù)展示

zabbix web

graph -> screen -> slideshow(將多個(gè)screen以幻燈片的方式進(jìn)行輪流展示)

案例: 如果需要查看大量的歷史數(shù)據(jù), 可以考慮再裝一個(gè)zabbix web, 并且安裝mysql從庫, 之后, 如果需要查看大量的歷史數(shù)據(jù), 可以從單獨(dú)的web去查看, 此時(shí)會(huì)從從庫去調(diào)數(shù)據(jù), 因?yàn)閺膸於际菑闹鲙焱降臄?shù)據(jù), 所以數(shù)據(jù)是沒問題的. 這樣會(huì)緩解主庫的壓力

grafana

以zabbix為數(shù)據(jù)源展示更絢麗的界面
grafana會(huì)通過zabbix web獲取配置信息, 監(jiān)控項(xiàng), 然后去數(shù)據(jù)庫拿取監(jiān)控?cái)?shù)據(jù), 顯示在界面

1.3.4 告警通知

host (host groups) <- templates #從模板繼承告警配置 
host -> items -> triggers -> action (條件-conditions, 操作-operations) #自定義告警配置

1.4 集中式監(jiān)控 vs 分布式監(jiān)控

  • 集中式監(jiān)控: 所有工作都由同一個(gè)服務(wù)器做完成, 包括信息收集和展示. 無法支持規(guī)模較大的架構(gòu)
  • 分布式監(jiān)控: 服務(wù)器端負(fù)責(zé)系統(tǒng)配置, 數(shù)據(jù)寫入和展示, agent負(fù)責(zé)在被監(jiān)控服務(wù)器上收集數(shù)據(jù), 將數(shù)據(jù)發(fā)給proxy代理, 由proxy再把數(shù)據(jù)再發(fā)給server. 通過代理去監(jiān)控服務(wù)器, 代理把數(shù)據(jù)上傳到server, server把監(jiān)控?cái)?shù)據(jù)寫入MySQL.

運(yùn)維人員通過訪問web界面連接到server析珊,如果要查看某個(gè)服務(wù)器的監(jiān)控項(xiàng)有哪些, server會(huì)去查MySQL拿到被監(jiān)控的數(shù)據(jù)項(xiàng), 然后web再連接到MySQL根據(jù)監(jiān)控項(xiàng)去查數(shù)據(jù)

zabbix server和zabbix agent之間通信靠的是zabbix協(xié)議, 默認(rèn)是明文

2 Zabbix規(guī)劃及部署

部署環(huán)境:

Ubuntu 1804
Zabbix-Server               10.0.0.19
Zabbix-主動(dòng)代理              10.0.0.29
Zabbix-被動(dòng)代理              10.0.0.39
MySQL-Master                10.0.0.49
MySQL-Slave                 10.0.0.59
WebSrv-1                    10.0.0.69
WebSrv-2                    10.0.0.79

最小化系統(tǒng), 安裝常用包

apt update
apt -y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip

2.1 apt 安裝 Zabbix v4.0

zabbix-主動(dòng)代理主機(jī)上安裝zabbix, 10.0.0.29
mysql-slave主機(jī)上安裝mysql, 10.0.0.59

主動(dòng)代理上, apt安裝zabbix

wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
dpkg -c zabbix-release_4.0-3+bionic_all.deb 
drwxr-xr-x root/root         0 2019-07-31 00:34 ./
drwxr-xr-x root/root         0 2019-07-31 00:34 ./etc/
drwxr-xr-x root/root         0 2019-07-31 00:34 ./etc/apt/
drwxr-xr-x root/root         0 2019-07-31 00:34 ./etc/apt/sources.list.d/
-rw-r--r-- root/root       118 2019-07-31 00:34 ./etc/apt/sources.list.d/zabbix.list  #把源修改為阿里云
dpkg -i zabbix-release_4.0-3+bionic_all.deb
vim /etc/apt/sources.list.d/zabbix.list
deb https://mirrors.aliyun.com/zabbix/zabbix/4.0/ubuntu bionic main
deb-src https://mirrors.aliyun.com/zabbix/zabbix/4.0/ubuntu bionic main
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent -y
# server安裝時(shí)需要指定數(shù)據(jù)庫類型, 我們使用mysql

mysql-slave上部署mysql

apt update
root@mysql-slave:~# apt -y install mysql-server

默認(rèn)Ubuntu的MySQL監(jiān)聽在127地址, 如果Zabbix-Server和MySQL在同一個(gè)主機(jī)可以, 如果是不同主機(jī), 那么要修改MySQL監(jiān)聽端口

root@mysql-slave:~# ss -ntl
State                  Recv-Q                  Send-Q                                    Local Address:Port                                      Peer Address:Port                                     
LISTEN                 0                       80                                            127.0.0.1:3306                                           0.0.0.0:*
root@mysql-slave:~# vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address        = 127.0.0.1  --> 0.0.0.0
root@mysql-slave:~# systemctl restart mysql
root@mysql-slave:~# systemctl enable --now mysql
Synchronizing state of mysql.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mysql
root@mysql-slave:~# ss -ntl
State                  Recv-Q                  Send-Q                                    Local Address:Port                                    Peer Address:Port                               
LISTEN                 0                       80                                              0.0.0.0:3306                                         0.0.0.0:*

創(chuàng)建zabbix數(shù)據(jù)庫并授權(quán)

root@mysql-slave:~# mysql
mysql>  create database zabbix_server_apt character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec) #zabbix_server_apt表示用apt安裝的zabbix
mysql> grant all on zabbix_server_apt.* to zabbix@"10.0.0.%" identified by 'zabbix';
Query OK, 0 rows affected, 1 warning (0.00 sec)

在主動(dòng)代理上測(cè)試MySQL連接

root@zabbix-proxy-active:~# mysql -uzabbix -h10.0.0.59 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| zabbix_server_apt  |
+--------------------+
2 rows in set (0.01 sec)

編輯zabbix-server端配置文件

root@zabbix-proxy-active:~# vim /etc/zabbix/zabbix_server.conf
# DBHost=localhost  --> DBHost=10.0.0.59
DBName=zabbix --> DBName=zabbix_server_apt
DBUser=zabbix #默認(rèn)用戶zabbix, 可以根據(jù)數(shù)據(jù)庫授權(quán)時(shí)的配置自定義修改
# DBPassword= --> DBPassword=zabbix  #默認(rèn)為空, 可以根據(jù)數(shù)據(jù)庫授權(quán)時(shí)的配置自定義修改

為Zabbix前端配置PHP, 編輯配置文件 /etc/zabbix/apache.conf

    <IfModule mod_php5.c>

        php_value date.timezone Asia/Shanghai                                                                                                                                       
    </IfModule>
    <IfModule mod_php7.c>

        php_value date.timezone Asia/Shanghai

導(dǎo)入初始架構(gòu)和數(shù)據(jù), 需要先導(dǎo)入sql文件, 再啟動(dòng)zabbix

root@zabbix-proxy-active:~# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix -h10.0.0.59 zabbix_server_apt (zabbix庫名)
# yum/apt和源碼安裝zabbix, 使用的代入腳本不同

啟動(dòng)Zabbix server和agent進(jìn)程敢会,并為它們?cè)O(shè)置開機(jī)自啟

root@zabbix-proxy-active:~# systemctl restart zabbix-server zabbix-agent apache2
root@zabbix-proxy-active:~# systemctl enable --now zabbix-server zabbix-agent apache2
Synchronizing state of zabbix-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-server
Synchronizing state of zabbix-agent.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-agent
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2

驗(yàn)證監(jiān)聽端口

圖片.png

初始化zabbix

訪問:zabbix_ip/zabbix

圖片.png

檢查php配置

yum和apt安裝的zabbix, 會(huì)自動(dòng)配置php, 如果是源碼安裝, 還要單獨(dú)配置php

image.png

給zabbix-web配置數(shù)據(jù)庫

在zabbix-web添加配置后, web會(huì)把配置寫到數(shù)據(jù)庫, 因此要告訴web, 數(shù)據(jù)庫的信息

圖片.png

給zabbix-web配置zabbix服務(wù)器信息

zabbix-web可以和server配置在不同主機(jī), 因此需要指定server的地址

圖片.png

之后驗(yàn)證配置, 完成, 登錄即可

圖片.png
圖片.png
圖片.png

初始化zabbix-web后, 會(huì)生成配置文件, 保存配置信息, 如果初始化時(shí)信息填錯(cuò), 后期可以修改配置文件即可

root@zabbix-proxy-active:~#  vim /usr/share/zabbix/conf/zabbix.conf.php

<?php                                                                                                                                                        
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = '10.0.0.59';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'zabbix_server_apt';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = '10.0.0.29';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Zabbix Server';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

zabbix默認(rèn)用戶是Admin, 默認(rèn)密碼zabbix

image.png
圖片.png

驗(yàn)證Zabbix Server is running


圖片.png

默認(rèn)zabbix會(huì)監(jiān)控自己, 因此, 可以看到本地產(chǎn)生的監(jiān)控信息

圖片.png

2.2 源碼安裝 zabbix v4.0

Zabbix源碼包可以用來裝server,agent和proxy, 具體編譯參數(shù)不同

zabbix-server主機(jī)上安裝zabbix server, 10.0.0.19
mysql-master主機(jī)上安裝mysql, 10.0.0.49

  1. 兩臺(tái)主機(jī)分別安裝最小化依賴包
apt update
apt -y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip
  1. mysql-master上安裝mysql
apt -y install mysql-server
vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address        = 127.0.0.1  --> 0.0.0.0
systemctl restart mysql
systemctl enable --now mysql
  1. zabbix-server主機(jī)上, 將zabbix源碼包解壓
tar xvf zabbix-4.0.27.tar.gz -C /usr/local/src
  1. zabbix-server創(chuàng)建zabbix用戶
useradd zabbix
  1. mysql-master上準(zhǔn)備zabbix數(shù)據(jù)庫
create database zabbix_server character set utf8 collate utf8_bin;
grant all privileges on zabbix_server.* to zabbix@"10.0.0.%" identified by 'zabbix';

zabbix-server上測(cè)試數(shù)據(jù)庫連接

root@zabbix-server:~# apt -y install mysql-client
root@zabbix-server:~# mysql -uzabbix -pzabbix -h 10.0.0.49
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| zabbix_server      |
+--------------------+
2 rows in set (0.00 sec)

  1. 編譯zabbix server和zabbix agent
apt-get install apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapache2-mod-php7.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 libssh2-1 libtiff5 libwebp6 libxpm4 php-bcmath php-common php-gd php-ldap php-mbstring php-mysql php-xml php7.2-bcmath php7.2-cli php7.2-common php7.2-gd php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-readline php7.2-xml snmpd ssl-cert ttf-dejavu-core libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev openjdk-8-jdk curl libcurl4-openssl-dev -y
# 這里使用openjdk-8, 并且apt安裝apache2, 因?yàn)閦abbix 4.0要依賴于apache

cd /usr/local/src/zabbix-4.0.27/
./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java
# --enable-server: 安裝zabbix server
# --enable-agent: server上也要安裝agent, 來監(jiān)控server自身

make install
root@zabbix-server:/usr/local/src/zabbix-4.0.27# ll /apps/zabbix_server/
total 28
drwxr-xr-x 7 root root 4096 Dec  8 17:17 ./
drwxr-xr-x 3 root root 4096 Dec  8 17:16 ../
drwxr-xr-x 2 root root 4096 Dec  8 17:16 bin/
drwxr-xr-x 4 root root 4096 Dec  8 17:17 etc/
drwxr-xr-x 3 root root 4096 Dec  8 17:16 lib/
drwxr-xr-x 3 root root 4096 Dec  8 17:17 sbin/
drwxr-xr-x 4 root root 4096 Dec  8 17:17 share/
root@zabbix-server:/usr/local/src/zabbix-4.0.27# ls database/mysql/
data.sql  images.sql  Makefile  Makefile.am  Makefile.in  schema.sql
  1. 從zabbix-server主機(jī)上導(dǎo)入數(shù)據(jù)庫
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mysql -uzabbix -pzabbix -h10.0.0.49 zabbix_server <  database/mysql/schema.sql #如果是部署zabbix-proxy, 那么只需要導(dǎo)入schema.sql, 剩下的兩個(gè)文件無需導(dǎo)入
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mysql -uzabbix -pzabbix -h10.0.0.49 zabbix_server <  database/mysql/images.sql
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mysql -uzabbix -pzabbix -h10.0.0.49 zabbix_server <  database/mysql/data.sql
  1. 編輯zabbix server配置文件
vim /apps/zabbix_server/etc/zabbix_server.conf
DBHost=10.0.0.49
DBName=zabbix_server
DBPassword=zabbix
  1. 配置zabbix web界面
root@zabbix-server:/usr/local/src/zabbix-4.0.27# mkdir /var/www/html/zabbix
root@zabbix-server:/usr/local/src/zabbix-4.0.27# cd frontends/php/
root@zabbix-server:/usr/local/src/zabbix-4.0.27/frontends/php# cp -a . /var/www/html/zabbix
  1. 測(cè)試zabbix訪問


    圖片.png
  1. 解決報(bào)錯(cuò)
圖片.png
image.png
vim /etc/php/7.2/apache2/php.ini
post_max_size = 16M
image.png
vim /etc/php/7.2/apache2/php.ini
max_execution_time = 300 
image.png
vim /etc/php/7.2/apache2/php.ini
max_input_time = 300
image.png
vim /etc/php/7.2/apache2/php.ini
date.timezone = Asia/Shanghai
systemctl restart apache2

刷新頁面, 驗(yàn)證報(bào)錯(cuò)消失

圖片.png
  1. 配置zabbix


    圖片.png
圖片.png
圖片.png
  1. 準(zhǔn)備php配置文件
圖片.png

apt安裝的zabbix, 會(huì)在配置zabbix后, 生成php配置文件, 并且保存到zabbix目錄里, 編譯安裝需要手動(dòng)添加, 或者修改源碼包提供的模板文件

點(diǎn)擊Download the configuration file, 下載php配置文件, 并保存的指定路徑

root@zabbix-server:/var/www/html/zabbix/conf# cat zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = '10.0.0.49';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'zabbix_server';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = '10.0.0.19';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Zabbix Server';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;   

刷新頁面, 即可顯示成功


圖片.png
  1. 啟動(dòng)zabbix server 端口10051

登錄到zabbix后, 會(huì)顯示zabbix server未啟動(dòng), 因?yàn)榫幾g安裝的zabbix是不會(huì)自動(dòng)啟動(dòng)zabbix server的

圖片.png

啟動(dòng)方法1: 直接使用zabbix命令

缺點(diǎn): 后期關(guān)閉只能通過kill進(jìn)程實(shí)現(xiàn)

/apps/zabbix_server/sbin/zabbix_server  -c /apps/zabbix_server/etc/zabbix_server.conf
root@zabbix-server:/var/www/html/zabbix/conf# ss -ntl
State                  Recv-Q                  Send-Q                                    Local Address:Port                                      Peer Address:Port                                    
LISTEN                 0                       128                                             0.0.0.0:10051     #驗(yàn)證10051端口開啟                                     0.0.0.0:* 

刷新頁面, 驗(yàn)證啟動(dòng)成功

image.png

啟動(dòng)方法2: 利用service文件

先把二進(jìn)制啟動(dòng)的zabbix server進(jìn)程關(guān)閉

pkill zabbix_server
ps aux | grep zabbix
root      39195  0.0  0.1  14436  1048 pts/0    S+   18:31   0:00 grep --color=auto zabbix

準(zhǔn)備service文件

root@zabbix-server:~# vim /lib/systemd/system/zabbix-server.service

[Unit]                                                                                                                                                                              
Description=Zabbix Server After=syslog.target After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix_server/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking 
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
chown -R zabbix.zabbix  /apps/zabbix_server/

啟動(dòng)zabbix server

systemctl daemon-reload
systemctl restart zabbix-server
systemctl enable zabbix-server

驗(yàn)證zabbix server啟動(dòng)成功

LISTEN                 0                       128                                             0.0.0.0:10051                                          0.0.0.0:* 
  1. 啟動(dòng)zabbix agent端口10050

此時(shí), 查看zabbix Host, 可以看到ZMX是連接失敗的, 因?yàn)檫€沒有啟動(dòng)agent

圖片.png

準(zhǔn)備agent service文件

vim /etc/systemd/system/zabbix-agent.service
[Unit] 
Description=Zabbix Agent 
After=syslog.target 
After=network.target 
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=apps/zabbix_server/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix_server/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
root@zabbix-server:~# systemctl daemon-reload
root@zabbix-server:~# systemctl restart zabbix-agent
root@zabbix-server:~# systemctl enable zabbix-agent
root@zabbix-server:~# ss -ntl
State                  Recv-Q                  Send-Q                                    Local Address:Port                                      Peer Address:Port                  
LISTEN                 0                       64                                              0.0.0.0:2049                                           0.0.0.0:*                     
LISTEN                 0                       128                                             0.0.0.0:10050      #10050端口啟動(dòng)成功                                    0.0.0.0:*                     
LISTEN                 0                       128                                             0.0.0.0:10051                                          0.0.0.0:* 

刷新頁面, 驗(yàn)證

圖片.png

2.3 配置中文界面

安裝并設(shè)置中文簡(jiǎn)體語言環(huán)境

apt-get install language-pack-zh*

vim /etc/environment 

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
LANG="zh_CN.UTF-8"      

重新設(shè)備本地配置

dpkg-reconfigure locales
圖片.png
圖片.png
圖片.png

重啟apache2

systemctl restart apache2

刷新頁面, 設(shè)置中文

圖片.png
圖片.png

2.4 監(jiān)控項(xiàng)與亂碼

2.4.1圖形亂碼

配置了中文界面后, web會(huì)顯示為中文, 但是Ubuntu系統(tǒng)本身是沒有相關(guān)字體支持的, 因此需要相關(guān)字體支持才能顯示

圖片.png

2.4.2 上傳字體文件

在Windows的C:\Windows\Fonts下, 找一個(gè)自己喜歡的中文字體, 拷貝的Ubuntu上

圖片.png

如果是編譯安裝的Zabbix, 需要把字體上傳到/var/www/html/zabbix/assets/fonts目錄下
如果是apt/yum安裝的Zabbix, 需要把字體上傳到/usr/share/zabbix/assets/fonts

具體上傳的目錄, 是在配置文件中定義

apt/yum查看: /usr/share/zabbix/include/defines.inc.php
圖片.png
源碼編譯查看: /var/www/html/zabbix/include/defines.inc.php
圖片.png

這里演示在apt安裝Zabbix下的操作

  1. 將字體文件拷貝到/usr/share/zabbix/assets/fonts
ls /usr/share/zabbix/assets/fonts
graphfont.ttf  simkai.ttf
# graphfront.ttf是默認(rèn)的字體文件
  1. 修改/usr/share/zabbix/include/defines.inc.php文件的72和113行, 修改字體文件名為simkai
vim /usr/share/zabbix/include/defines.inc.php
# 72行 define('ZBX_GRAPH_FONT_NAME',       'simkai'); // font file name 
# 113行 define('ZBX_FONT_NAME', 'simkai');   
  1. 保存文件, 直接刷新頁面
圖片.png

2.5 Zabbix配置文件詳解

監(jiān)聽端口

# ListenPort=10051
# zabbix server監(jiān)聽端口, 默認(rèn)10051, zabbix agent監(jiān)聽端口默認(rèn)10050, java gateway端口默認(rèn)10052

zabbix服務(wù)器與遠(yuǎn)端服務(wù)器通信的源地址

# SourceIP= #多IP地址情況下,與其他服務(wù)器通信使用的源IP地址; 只適用于zabbix server有多個(gè)網(wǎng)卡情況下, 單網(wǎng)卡時(shí)不用指定

Zabbix日志類型

#       system  - syslog #使用syslog, /var/log/syslog
#       file    - file specified with LogFile parameter #編譯安裝的日志存放在LogFile=/tmp/zabbix_server.log, 如果是apt安裝的zabbix server, 日志存放在/var/log/zabbix目錄里
#       console - standard output #容器中可以使用標(biāo)準(zhǔn)輸出, 把日志顯示到標(biāo)準(zhǔn)輸出上

指定日志文件大小

# LogFileSize=1 #指定日志滾動(dòng)寫入大小陷谱,當(dāng)達(dá)到指定大小時(shí),會(huì)刪除舊日志重新從頭寫入新日志, 以M為單位, 默認(rèn)無限制. Zabbix本地磁盤空間不大時(shí), 可以設(shè)置

日志顯示級(jí)別

#   Specifies debug level:
#   0 - basic information about starting and stopping of Zabbix processes
#   1 - critical information
#   2 - error information
#   3 - warnings #默認(rèn)warnings
#   4 - for debugging (produces lots of information) #排錯(cuò)時(shí)可以用4, 但是會(huì)占用大量磁盤空間
#   5 - extended debugging (produces even more information)

pid路徑

# PidFile=/tmp/zabbix_server.pid

保留歷史數(shù)據(jù)

# HistoryStorageURL= #配合elasticsearch服務(wù)瑟蜈,保存zabbix歷史數(shù)據(jù)到ES里面烟逊,優(yōu)化zabbix性能,新版本zabbix才支持, zabbix查歷史數(shù)據(jù)時(shí)可以在ES查, 效率比使用MySQL高

zabbix server預(yù)啟動(dòng)實(shí)例數(shù)量, pollers就是zabbix監(jiān)控?cái)?shù)據(jù)的收集器; zabbix默認(rèn)工作在被動(dòng)模式下, zabbix server會(huì)通過pollers進(jìn)程與被監(jiān)控節(jié)點(diǎn)建立連接收集數(shù)據(jù), 因此根據(jù)被管理節(jié)點(diǎn)的數(shù)量不同, 要調(diào)整pollers進(jìn)程數(shù)量, 一般是每個(gè)pollers進(jìn)程會(huì)平均收集若干個(gè)被管理節(jié)點(diǎn)的數(shù)據(jù); 在主動(dòng)模式下, 無需pollers

# StartPollers=5 #預(yù)啟動(dòng)多少個(gè)實(shí)例數(shù)量, zabbix中, 一個(gè)實(shí)例就是一個(gè)zabbix server進(jìn)程, 默認(rèn)5, zabbix主進(jìn)程只有一個(gè), 其余都是主進(jìn)程的子進(jìn)程
# 這里修改pollers為10
StartPollers=10
zabbix    39970  0.0  0.9 223008  9728 ?        S    18:54   0:02 /apps/zabbix_server/sbin/zabbix_server: poller #1 [got 0 values in 0.000011 sec, idle 1 sec]
zabbix    39971  0.0  0.9 223008  9728 ?        S    18:54   0:02 /apps/zabbix_server/sbin/zabbix_server: poller #2 [got 0 values in 0.000011 sec, idle 1 sec]
zabbix    39972  0.0  0.9 223012  9728 ?        S    18:54   0:02 /apps/zabbix_server/sbin/zabbix_server: poller #3 [got 2 values in 0.000097 sec, idle 1 sec]
zabbix    39973  0.0  1.0 223132 10592 ?        S    18:54   0:02 /apps/zabbix_server/sbin/zabbix_server: poller #4 [got 0 values in 0.000038 sec, idle 1 sec]
zabbix    39974  0.0  0.9 223156  9728 ?        S    18:54   0:02 /apps/zabbix_server/sbin/zabbix_server: poller #5 [got 0 values in 0.000009 sec, idle 1 sec]

預(yù)啟動(dòng)進(jìn)程, 處理zabbix agent數(shù)據(jù), 根據(jù)agent節(jié)點(diǎn)數(shù)量進(jìn)行調(diào)整

# StartPreprocessors=3 #預(yù)啟動(dòng)多少個(gè)進(jìn)程用于處理zabbix agent數(shù)據(jù), 默認(rèn)為3個(gè). 一般要躲開
# 這里開5個(gè)


不可達(dá)主機(jī)的輪詢進(jìn)程的初始實(shí)例啟動(dòng)數(shù)量, 被管理節(jié)宕機(jī)后, 由該進(jìn)程對(duì)主機(jī)進(jìn)行探測(cè), 觀察主機(jī)是否恢復(fù). 這些進(jìn)程就是StartPollersUnreachable

# StartPollersUnreachable=1 #不可達(dá)主機(jī)的輪詢進(jìn)程的初始實(shí)例啟動(dòng)數(shù)量, 一般開啟2-3個(gè)即可. 如果不可達(dá)主機(jī)過多, 就說明網(wǎng)絡(luò)或者服務(wù)出問題了

觸發(fā)器進(jìn)程

# StartTrappers=5 #預(yù)啟動(dòng)的Trappers進(jìn)程數(shù)量, 用于做報(bào)警, 如果報(bào)警過多需要調(diào)多
# StartPingers=1 #ICMP ping進(jìn)程的初始實(shí)例數(shù)量, 監(jiān)控網(wǎng)絡(luò)設(shè)備時(shí), 用ping
# StartDiscoverers=1 #自動(dòng)發(fā)現(xiàn)主機(jī)的進(jìn)程數(shù)量; 配置zabbix server對(duì)某個(gè)網(wǎng)段進(jìn)行自動(dòng)發(fā)現(xiàn), 如果主機(jī)安裝了agent, 那么會(huì)自動(dòng)把主機(jī)加入到監(jiān)控列表
# StartHTTPPollers=1 #http 進(jìn)程數(shù)量, 根據(jù)訪問zabbix頁面的人數(shù)進(jìn)行調(diào)整

計(jì)時(shí)器進(jìn)程數(shù)量

# StartTimers=1 #計(jì)時(shí)器實(shí)例數(shù)量铺根,計(jì)時(shí)器用于計(jì)算問題的發(fā)生時(shí)間和步驟同步等; zabbix內(nèi)部有很多和時(shí)間相關(guān)的設(shè)置, 比如發(fā)送報(bào)警. 報(bào)警一旦觸發(fā), 會(huì)按照設(shè)置的間隔時(shí)間去發(fā)送報(bào)警信息, 間隔時(shí)間的計(jì)算由zabbix計(jì)時(shí)器進(jìn)程去計(jì)算處理
# StartEscalators=1 #escalators進(jìn)程的初始實(shí)例數(shù)量宪躯,用于處理動(dòng)作中的自動(dòng)步驟的進(jìn)程的數(shù)量; 發(fā)送告警前, 會(huì)先執(zhí)行預(yù)定義動(dòng)作, 比如連續(xù)三次探測(cè)失敗, 才會(huì)觸發(fā)報(bào)警; 或者定義告警發(fā)送幾次后如果問題還存在, 那么就把告警信息發(fā)送給其他人

java網(wǎng)關(guān)相關(guān)配置

JavaGateway= #javagateway服務(wù)器地址,java pollers必須設(shè)置
JavaGatewayPort=10052 #javagateway端口
StartJavaPollers=20 #java輪訓(xùn)實(shí)例預(yù)啟動(dòng)數(shù)量, 根據(jù)監(jiān)控的java服務(wù)器數(shù)量進(jìn)行調(diào)整

監(jiān)控vmware

# StartVMwareCollectors=0 #用于設(shè)置監(jiān)控VMWARE Esxi主機(jī)實(shí)例時(shí)使用位迂,若為0則不啟用访雪,若要監(jiān)控ESXI主機(jī)详瑞,此值最少為1,根據(jù)監(jiān)控ESXI數(shù)量設(shè)置對(duì)應(yīng)數(shù)值

zabbix server監(jiān)聽地址

# ListenIP=0.0.0.0 #監(jiān)聽地址, 默認(rèn)0.0.0.0

agent的歷史數(shù)據(jù)刪除

# HousekeepingFrequency=1 #zabbix對(duì)于agent的每個(gè)監(jiān)控項(xiàng)都會(huì)保存歷史數(shù)據(jù), 并且可以自定義保存時(shí)長(zhǎng), 到期會(huì)自動(dòng)刪除, 該頻率默認(rèn)為1小時(shí), 也就是zabbix會(huì)每隔一個(gè)小時(shí)查看有沒有過期的歷史數(shù)據(jù), 有就刪除, 一般可以每天清理一次, 防止歷史數(shù)據(jù)過多, 占用磁盤空間

# MaxHousekeeperDelete=5000 #每次最多刪除歷史數(shù)據(jù)的行數(shù), 默認(rèn)是刪除5000行, 但是由于監(jiān)控項(xiàng)很多, 可以設(shè)置為最大值1000000行
# CacheSize=8M  #配置信息緩存大小, 保存zabbix配置信息, 所有加入到zabbix的監(jiān)控項(xiàng)都屬于配置信息, 因此該選項(xiàng)值要調(diào)大, 根據(jù)監(jiān)控項(xiàng)數(shù)量調(diào)整, 比如2G,4G
# 這里改為128M
CacheSize=128M

# CacheUpdateFrequency=60 #Zabbix更新緩存數(shù)據(jù)的頻率臣缀,單位為秒坝橡,范圍是1-3600, zabbix每間隔多久, 更新一次配置信息, 可以配置為3,或5分鐘更新一次
# StartDBSyncers=4  #zabbix和數(shù)據(jù)庫同步數(shù)據(jù)的進(jìn)程數(shù)量, zabbix agent和proxy發(fā)給zabbix server的數(shù)據(jù), 最終都是通過zabbix server寫入到數(shù)據(jù)庫, 因此, 啟用多少個(gè)DB同步進(jìn)程, 就會(huì)影響數(shù)據(jù)同步, 建議調(diào)大, 8|16等
# 這里改為8
StartDBSyncers=8
# HistoryCacheSize=16M #歷史數(shù)據(jù)的緩存大小, 具體根據(jù)服務(wù)器的內(nèi)存進(jìn)行調(diào)整
# 這里改為128M
HistoryCacheSize=128M
# HistoryIndexCacheSize=4M #歷史數(shù)據(jù)索引緩存的大小, 根據(jù)zabbix server服務(wù)器的內(nèi)存大小進(jìn)行調(diào)整; 查看zabbix web的圖形信息時(shí), 會(huì)使用歷史或者趨勢(shì)數(shù)據(jù), 可以將這些數(shù)據(jù)放入緩存, 盡快效率, 可以設(shè)為2G
# 這里改為32M
HistoryIndexCacheSize=32M
# TrendCacheSize=4M #用于設(shè)置劃分多少系統(tǒng)共享內(nèi)存用于存儲(chǔ)計(jì)算出來的趨勢(shì)數(shù)據(jù),此參數(shù)值從一定程度上可影響數(shù)據(jù)庫讀壓力精置,范圍是128K-2G. 這個(gè)就是趨勢(shì)數(shù)據(jù)的緩存大小
# 這里改為32M

# ValueCacheSize=8M #歷史值緩存的大小计寇,就是監(jiān)控?cái)?shù)據(jù)的值, 用于緩存歷史數(shù)據(jù)請(qǐng)求的共享內(nèi)存大小
# 這里改為32M
ValueCacheSize=32M
Timeout=4 #agent采集數(shù)據(jù), 返回?cái)?shù)據(jù)等待超時(shí)時(shí)間, 默認(rèn)4秒, 也就是說zabbix server給agent下發(fā)收集數(shù)據(jù)指令后, 會(huì)等待4秒, 如果agent在4秒內(nèi)沒有返回?cái)?shù)據(jù), zabbix server會(huì)嘗試一定次數(shù)后,認(rèn)為服務(wù)器宕機(jī), 一般建議調(diào)大, 設(shè)為最長(zhǎng)30秒, 避免由于網(wǎng)絡(luò)延遲或者服務(wù)本身響應(yīng)的問題, 導(dǎo)致服務(wù)本身沒問題, 但是agent響應(yīng)超時(shí), 被zabbix server誤認(rèn)為服務(wù)不可用
# TrapperTimeout=300 #觸發(fā)器處理新數(shù)據(jù)的最長(zhǎng)時(shí)間,單位是秒, 可以指定為1分鐘, 觸發(fā)器超時(shí)時(shí)間不宜過長(zhǎng)
# UnreachablePeriod=45 #當(dāng)主機(jī)不可達(dá)多少秒后脂倦,設(shè)置為主機(jī)不可用番宁,單位是秒,范圍是1-3600, 建議時(shí)間調(diào)大, 比如60秒
# UnavailableDelay=60 #當(dāng)主機(jī)不可用了赖阻,多久檢查一次該主機(jī)的可用性蝶押,單位為秒,范圍是1-3600, 時(shí)間不要太短, 否則導(dǎo)致檢查頻率過大, zabbix負(fù)載增高
# AlertScriptsPath=${datadir}/zabbix/alertscripts #監(jiān)控報(bào)警腳本路徑,取決于編譯時(shí)候的datadir參數(shù). 也可以自定義, 只要修改路徑即可
# ExternalScripts=${datadir}/zabbix/externalscripts #自定義腳本存儲(chǔ)路徑, 執(zhí)行操作, 一般很少用
# FpingLocation=/usr/sbin/fping #fping命令的位置, 需要手動(dòng)確定fping位置
ping和fping都可以使用, 不過ping默認(rèn)會(huì)持續(xù)ping ,fping會(huì)直接返回對(duì)方是否可達(dá), 返回alive或者unreachable. 一般對(duì)于網(wǎng)絡(luò)設(shè)備, 可以使用fping
# LogSlowQueries=0 慢日志時(shí)間(以毫秒為單位),僅當(dāng)DebugLevel設(shè)置為3,4或5時(shí)才可用,0 - 不記錄慢查詢,范圍是1-3600000. 用于記錄zabbix查數(shù)據(jù)時(shí), 如果返回時(shí)間過長(zhǎng), 可以記錄下來
# StartProxyPollers=1 #啟用多少子進(jìn)程與proxy代理端通信火欧,若代理較多可考慮加大此數(shù)值播聪,范圍是0-250, 進(jìn)程數(shù)要大于等于代理數(shù)量的值; 用于被動(dòng)模式
如果進(jìn)程數(shù)量, 少于代理數(shù)量, 那么server需要依次從proxy申請(qǐng)數(shù)據(jù), 會(huì)有等待排隊(duì)現(xiàn)象
# ProxyConfigFrequency=3600 #proxy被動(dòng)模式下,server多少秒同步配置文件至proxy布隔,該參數(shù)僅用于被動(dòng)模式下的代理离陶,范圍是1-3600*24*7; 
# ProxyDataFrequency=1 #被動(dòng)模式下,zabbix server間隔多少秒向proxy請(qǐng)求歷史數(shù)據(jù)
該頻率就是zabbix server每隔多少秒向proxy收集一次數(shù)據(jù), 如果想迅速獲取數(shù)據(jù), 那么間隔時(shí)間不宜過長(zhǎng), 防止添加服務(wù)器前, zabbix剛從proxy獲取了一次數(shù)據(jù), 那么要等一個(gè)周期才能獲取到新添加節(jié)點(diǎn)的數(shù)據(jù); 獲取數(shù)據(jù)和同步配置信息的間隔一般設(shè)定為一樣, 比如都是60秒一次
# Include=/usr/local/etc/zabbix_server.general.conf #導(dǎo)入其他目錄的配置文件, 一般是自定義監(jiān)控項(xiàng), 通過自定義腳本去獲取監(jiān)控?cái)?shù)據(jù)
# Include=/usr/local/etc/zabbix_server.conf.d/
# Include=/usr/local/etc/zabbix_server.conf.d/*.conf
修改配置后, 重啟zabbix-server
systemctl restart zabbix-server
  • 補(bǔ)充:
監(jiān)控查詢很慢時(shí), 可以查看是否增加了歷史數(shù)據(jù)和趨勢(shì)數(shù)據(jù)緩存大小
自動(dòng)發(fā)現(xiàn)一般也不要用, 因?yàn)闀?huì)增加zabbix的負(fù)載, 導(dǎo)致數(shù)據(jù)延遲, 可以通過api進(jìn)行添加
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衅檀,一起剝皮案震驚了整個(gè)濱河市招刨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哀军,老刑警劉巖沉眶,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異杉适,居然都是意外死亡谎倔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門猿推,熙熙樓的掌柜王于貴愁眉苦臉地迎上來片习,“玉大人,你說我怎么就攤上這事蹬叭∨河剑” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵秽五,是天一觀的道長(zhǎng)孽查。 經(jīng)常有香客問我,道長(zhǎng)坦喘,這世上最難降的妖魔是什么盲再? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任西设,我火速辦了婚禮,結(jié)果婚禮上答朋,老公的妹妹穿的比我還像新娘贷揽。我一直安慰自己,他們只是感情好绿映,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布擒滑。 她就那樣靜靜地躺著,像睡著了一般叉弦。 火紅的嫁衣襯著肌膚如雪丐一。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天淹冰,我揣著相機(jī)與錄音库车,去河邊找鬼。 笑死樱拴,一個(gè)胖子當(dāng)著我的面吹牛柠衍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晶乔,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼珍坊,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了正罢?” 一聲冷哼從身側(cè)響起阵漏,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翻具,沒想到半個(gè)月后履怯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裆泳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年叹洲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片工禾。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡运提,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帜篇,到底是詐尸還是另有隱情糙捺,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布笙隙,位于F島的核電站,受9級(jí)特大地震影響坎缭,放射性物質(zhì)發(fā)生泄漏竟痰。R本人自食惡果不足惜签钩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坏快。 院中可真熱鬧铅檩,春花似錦、人聲如沸莽鸿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祥得。三九已至兔沃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間级及,已是汗流浹背乒疏。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饮焦,地道東北人怕吴。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像县踢,于是被迫代替她去往敵國(guó)和親转绷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容