<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zabbix &#8211; nood1es</title>
	<atom:link href="https://yijie.lu/category/tools/zabbix/feed/" rel="self" type="application/rss+xml" />
	<link>https://yijie.lu</link>
	<description>Rick&#039;s Blog</description>
	<lastBuildDate>Tue, 04 Jul 2017 03:36:46 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.2.4</generator>

<image>
	<url>https://yijie.lu/wp-content/uploads/2017/05/411.png</url>
	<title>Zabbix &#8211; nood1es</title>
	<link>https://yijie.lu</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>优雅地部署Zabbix &#8211; Part 1</title>
		<link>https://yijie.lu/the-elegant-way-to-install-zabbix-p1/</link>
				<comments>https://yijie.lu/the-elegant-way-to-install-zabbix-p1/#respond</comments>
				<pubDate>Tue, 04 Jul 2017 03:34:32 +0000</pubDate>
		<dc:creator><![CDATA[Rick Lu]]></dc:creator>
				<category><![CDATA[Zabbix]]></category>

		<guid isPermaLink="false">https://yijie.lu/?p=37</guid>
				<description><![CDATA[<p>前言 进入新公司接手了监控项目，由于历史遗留问题（笑）内部有大量的坑，无奈推倒重来，后面会针对整个项目再做一个 [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://yijie.lu/the-elegant-way-to-install-zabbix-p1/">优雅地部署Zabbix &#8211; Part 1</a> appeared first on <a rel="nofollow" href="https://yijie.lu">nood1es</a>.</p>
]]></description>
								<content:encoded><![CDATA[<h3>前言</h3>
<p>进入新公司接手了监控项目，由于历史遗留问题（笑）内部有大量的坑，无奈推倒重来，后面会针对整个项目再做一个总结，这里不再赘述。</p>
<p>Zabbix作为老牌企业级开源监控，虽然有诸如监控图表鸡肋、配置麻烦等缺点，但同时也有监控协议灵活，部署轻量级等足以让你忽略掉各种缺点的优点。毫无疑问，是绝大多数公司的最佳选项。</p>
<p>Zabbix后端是C写的，前端是用The Best Language in The World 写的。由Zabbix Company负责维护，同大多数大型开源软件差不多，提供了各种各样的安装方式，Source／Package／repo应有尽有。</p>
<p>可能是由于早期国内第一批接触Zabbix的人都有源代码编译癖，几乎所有的教程全部都是教你通过编译源代码进行安装和部署，加之官方只会放出世代release版本的rpm／deb包。所以大家也都欣然接受通过编译安装Server端。</p>
<p><span id="more-37"></span></p>
<h3>分析过程</h3>
<p>前面提到，公司的监控项目需要打破重建，我司是几个人的小公司吗？由于涉及到数以千计的物理机和同等数量级的AP／AC／Router，所以我理所应当地采用了Server-Proxy-Agent的模式构建整个监控平台。</p>
<p><img class="size-medium aligncenter" src="http://s3.51cto.com/wyfs02/M01/78/2C/wKiom1Z3XMTzobggAACByDrtjQw883.png" width="564" height="480" /></p>
<p style="text-align: center;">图一：架构简略图</p>
<p>接着，本着面向GitHub／StackOverflow编程的原则，遍历项目无果。遂调整思路自己打包。由于初次涉及相关业务，新手上路踩坑无数。起初，思路清晰，在官方repo里面拿到最新源码，寻找官网文档进行rebuild。发现官方发布的源码阉割掉了打包rules，rebulid文档也是基于2.x版本写的。通过apt source下来的源码也是2.x版本的，通过官网文档添加source.list莫名失败。总之怎么弄怎么不行。</p>
<p>后来左思右想，社区应该不会这么脑残没有解决这问题。</p>
<p>最后发现了端倪，实际上，他们封装了source.list到deb包，直接安装即可获取最新源码。</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
dpkg -i zabbix-release_3.2-1+xenial_all.deb</pre>
<p>接着就引刃而解。</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">apt update

mkdir ~/temp &amp;&amp; cd ~/temp

apt source zabbix
</pre>
<p>这个时候，debian文件夹就出现了</p>
<p><img class="size-full wp-image-42 aligncenter" src="https://yijie.lu/wp-content/uploads/2017/06/屏幕快照-2017-06-29-上午11.40.54.png" alt="" width="535" height="101" /></p>
<p style="text-align: center;">图二：文件目录</p>
<p>&nbsp;</p>
<h3>打包的规则</h3>
<p>接着，就开始编译打包吗？那你就错了。为什么要这么折腾，不仅仅是为了最后的安装包，关键在这：debian/rules，也是整个编译过程中的控制脚本，以下是zabbix3.2.6的rules，下篇博文会就打包规则及debian helper（dh）的使用进行阐述。</p>
<pre class="EnlighterJSRAW" data-enlighter-language="shell">#!/usr/bin/make -f

 PACKAGES        = PGSQL MYSQL SQLITE3
 MYSQL_NAME      = mysql
 PGSQL_NAME      = postgresql
 SQLITE3_NAME    = sqlite3

 COMMON_CONFIG = --host=$(DEB_HOST_GNU_TYPE) \
                 --build=$(DEB_BUILD_GNU_TYPE) \
                 --prefix=/usr \
                 --sysconfdir=/etc/zabbix \
                 --libdir=/usr/lib/zabbix \
                 --enable-server \
                 --enable-agent \
                 --enable-ipv6 \
                 --enable-proxy \
                 --enable-java \
                 --with-jabber \
                 --with-ldap \
                 --with-net-snmp \
                 --with-openipmi \
                 --with-ssh2 \
                 --with-libcurl \
                 --with-unixodbc \
                 --with-libxml2 \
                 --with-openssl

 %:
     dh $@  --with autotools-dev

 override_dh_clean:
     dh_clean
     rm -f debian/conf/zabbix_agentd.conf
     rm -f debian/conf/zabbix_server.conf
     rm -f debian/conf/zabbix_proxy.conf
     rm -f debian/conf/zabbix_java_gateway.conf
     rm -f debian/conf/zabbix_java_gateway_logback.xml
     rm -f database/*/create.sql

 override_dh_auto_configure:
     $(foreach pkg, $(PACKAGES), \
         mkdir -p $(CURDIR)/debian/tmp.build-$(pkg) ; \
         tar -cSf - --exclude=./bin --exclude=./build --exclude=./frontends --          exclude=./debian . \
         | tar -xSpf - -C $(CURDIR)/debian/tmp.build-$(pkg) ; \
         cat $(CURDIR)/database/$($(pkg)_NAME)/schema.sql &gt; $(CURDIR)/database/         $($(pkg)_NAME)/create.sql ; \
         cat $(CURDIR)/database/$($(pkg)_NAME)/images.sql &gt;&gt; $(CURDIR)/database/        $($(pkg)_NAME)/create.sql ; \
         cat $(CURDIR)/database/$($(pkg)_NAME)/data.sql &gt;&gt; $(CURDIR)/database/          $($(pkg)_NAME)/create.sql ; \
         dh_auto_configure --sourcedirectory=$(CURDIR)/debian/tmp.build-$(pkg) --       $(COMMON_CONFIG) --with-$($(pkg)_NAME) ; \
     )


 override_dh_auto_build:
     $(foreach pkg, $(PACKAGES), \
         dh_auto_build --sourcedirectory=$(CURDIR)/debian/tmp.build-$(pkg) ; \
     )
     )
     cat conf/zabbix_agentd.conf | sed \
         -e '/^# PidFile=/a \\nPidFile=/var/run/zabbix/zabbix_agentd.pid' \
         -e 's|^LogFile=.*|LogFile=/var/log/zabbix/zabbix_agentd.log|g' \
         -e '/^# LogFileSize=.*/a \\nLogFileSize=0' \
         -e '/^# Include=$$/a \\nInclude=/etc/zabbix/zabbix_agentd.d/*.conf' \
         &gt; debian/conf/zabbix_agentd.conf
     cat conf/zabbix_server.conf |sed \
         -e '/^# PidFile=/a \\nPidFile=/var/run/zabbix/zabbix_server.pid' \
         -e 's|^LogFile=.*|LogFile=/var/log/zabbix/zabbix_server.log|g' \
         -e '/^# LogFileSize=/a \\nLogFileSize=0' \
         -e '/^# AlertScriptsPath=/a \\nAlertScriptsPath=/usr/lib/zabbix/alertscripts'  \
         -e '/^# ExternalScripts=/a \\nExternalScripts=/usr/lib/zabbix/                 externalscripts' \
         -e '/^# FpingLocation=/a \\nFpingLocation=/usr/bin/fping' \
         -e '/^# Fping6Location=/a \\nFping6Location=/usr/bin/fping6' \
         &gt; debian/conf/zabbix_server.conf
     cat conf/zabbix_proxy.conf | sed \
         -e '/^# PidFile=/a \\nPidFile=/var/run/zabbix/zabbix_proxy.pid' \
         -e 's|^LogFile=.*|LogFile=/var/log/zabbix/zabbix_proxy.log|g' \
         -e '/^# LogFileSize=/a \\nLogFileSize=0' \
         -e '/^# ExternalScripts=/a \\nExternalScripts=/usr/lib/zabbix/                 externalscripts' \
         -e '/^# FpingLocation=/a \\nFpingLocation=/usr/bin/fping' \
         -e '/^# Fping6Location=/a \\nFping6Location=/usr/bin/fping6' \
         &gt; debian/conf/zabbix_proxy.conf
     cat src/zabbix_java/settings.sh | sed \
         -e 's|^PID_FILE=.*|PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"|g' \
         -e '/^# TIMEOUT=/a \\nTIMEOUT=3' \
         &gt; debian/conf/zabbix_java_gateway.conf
     cat src/zabbix_java/lib/logback.xml | sed \
         -e 's|/tmp/zabbix_java.log|/var/log/zabbix/zabbix_java_gateway.log|g' \
         &gt; debian/conf/zabbix_java_gateway_logback.xml

 override_dh_install:
     dh_install
     rm debian/zabbix-java-gateway/usr/share/zabbix-java-gateway/lib/logback.xml
     rm debian/zabbix-java-gateway/usr/share/zabbix-java-gateway/lib/logback-console.   xml
     chmod 755 debian/zabbix-java-gateway/usr/sbin/zabbix_java_gateway
     find debian/zabbix-frontend-php/usr/share/zabbix -name .htaccess | xargs rm -f
     find debian/zabbix-frontend-php/usr/share/zabbix/locale -name '*.po' | xargs rm -f
     find debian/zabbix-frontend-php/usr/share/zabbix/locale -name '*.sh' | xargs rm -f
     rm debian/zabbix-frontend-php/usr/share/zabbix/fonts/DejaVuSans.ttf

 override_dh_installinit:
     dh_installinit -p zabbix-agent
     dh_installinit -p zabbix-java-gateway
     dh_installinit --no-start -p zabbix-server-mysql --name=zabbix-server
     dh_installinit --no-start -p zabbix-server-pgsql --name=zabbix-server
     dh_installinit --no-start -p zabbix-proxy-mysql --name=zabbix-proxy
     dh_installinit --no-start -p zabbix-proxy-pgsql --name=zabbix-proxy
     dh_installinit --no-start -p zabbix-proxy-sqlite3 --name=zabbix-proxy</pre>
<p>&nbsp;</p>
<p>The post <a rel="nofollow" href="https://yijie.lu/the-elegant-way-to-install-zabbix-p1/">优雅地部署Zabbix &#8211; Part 1</a> appeared first on <a rel="nofollow" href="https://yijie.lu">nood1es</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://yijie.lu/the-elegant-way-to-install-zabbix-p1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>
