小步快跑的公司可以最简化操作直接通过log4net将
分类:威尼斯手机娱乐官网

            

1、单机安装


首先创建安装路径,并解压安装包到该路径下:

[root@myhost usr]# mkdir elasticsearch

[root@myhost elasticsearch]# tar -zxvf /soft/elasticsearch-5.0.0.tar.gz

由于elasticsearch不能从root用户启动,因此首先需要创建一个用户用于elasticsearch。

[root@myhost /]# groupadd elk

[root@myhost /]# useradd es -g elk -p elasticsearch

[root@myhost /]# passwd es

然后为该路径赋予可普通用户的读写权限:

[root@myhost usr]# chmod -R 777 elasticsearch/

修改config/elasticsearch.yml 用于配置绑定的主机地址和端口号,以便其他机器可以访问。

# ---------------------------------- Network

network.host: 192.168.9.33

http.port: 9200

然后开放端口号9200:

# firewall-cmd --permanent --zone=public --add-port=9200/tcp

   很多小步快跑的公司,开发人员多则3-4个,面对巨大业务压力,日连夜的赶着上线,快速试错,自然就没时间搭建一些基础设施,比如说logCenter,但初期

问题解决:


1、解决“max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]”错误

修改打开文件/etc/secuity/limits.conf并在文件末尾添加:

es hard nofile 65536

es soft nofile 65536

其中es是用户名。

2、解决“max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]”错误

需要修改系统内核参数,在“/etc/sysctl.conf”文件中追加如下内容:

vm.max_map_count=262144

然后执行如下命令使内核修改马上生效:

[root@myhost usr]# sysctl -p

vm.max_map_count=262144

然后切换到es用户下直接启动:

[es@myhost bin]$ ./elasticsearch

当出现如下内容,代表成功启动:

[2016-11-05T15:32:52,063][INFO ][o.e.n.Node              ] [] initializing ...

[2016-11-05T15:32:52,165][INFO ][o.e.e.NodeEnvironment    ] [Ss79CYj] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [190.3gb], net total_space [191.7gb], spins? [unknown], types [rootfs]

[2016-11-05T15:32:52,165][INFO ][o.e.e.NodeEnvironment    ] [Ss79CYj] heap size [1.9gb], compressed ordinary object pointers [true]

[2016-11-05T15:32:52,167][INFO ][o.e.n.Node              ] [Ss79CYj] node name [Ss79CYj] derived from node ID; set [node.name] to override

[2016-11-05T15:32:52,169][INFO ][o.e.n.Node              ] [Ss79CYj] version[5.0.0], pid[18145], build[253032b/2016-10-26T04:37:51.531Z], OS[Linux/3.10.0-327.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_102/25.102-b14]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [aggs-matrix-stats]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [ingest-common]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-expression]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-groovy]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-mustache]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-painless]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [percolator]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [reindex]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [transport-netty3]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [transport-netty4]

[2016-11-05T15:32:53,562][INFO ][o.e.p.PluginsService    ] [Ss79CYj] no plugins loaded

[2016-11-05T15:32:55,810][INFO ][o.e.n.Node              ] [Ss79CYj] initialized

[2016-11-05T15:32:55,811][INFO ][o.e.n.Node              ] [Ss79CYj] starting ...

[2016-11-05T15:32:56,252][INFO ][o.e.t.TransportService  ] [Ss79CYj] publish_address {192.168.8.33:9300}, bound_addresses {192.168.8.33:9300}

[2016-11-05T15:32:56,258][INFO ][o.e.b.BootstrapCheck    ] [Ss79CYj] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks

[2016-11-05T15:32:59,549][INFO ][o.e.c.s.ClusterService  ] [Ss79CYj] new_master {Ss79CYj}{Ss79CYjUSveOkQMYseQn2Q}{rb_l_uyySHK0wNHoF7tYSw}{192.168.8.33}{192.168.8.33:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)

[2016-11-05T15:32:59,621][INFO ][o.e.h.HttpServer        ] [Ss79CYj] publish_address {192.168.8.33:9200}, bound_addresses {192.168.8.33:9200}

[2016-11-05T15:32:59,621][INFO ][o.e.n.Node              ] [Ss79CYj] started

[2016-11-05T15:32:59,658][INFO ][o.e.g.GatewayService    ] [Ss79CYj] recovered [0] indices into cluster_state

可以从浏览器中访问:

特别说明:ES5.0版本还不支持plugin安装。

项目不稳定,bug又多,每次都跑到生产去找日志,确实也不大方便,用elk或者用hadoop做日志中心,虽然都是没问题的,但基于成本和人手还是怎么简化怎么来,

2、集群配置


通过如下配置,将可以实现最基本的集群功能,集群的性能提升还需要参考性能调优一节。

Elasticsearch组成集群时,需要的节点数应该是奇数。

首先需要开放每一台安装Elasticsearch节点的端口号9300:

# firewall-cmd --permanent --zone=public --add-port=9300/tcp

然后配置每一个终端节点的配置文件“/config/elasticsearch.yml”,如下所示

cluster.name: elkCluster

node.name: node-33

bootstrap.memory_lock: false

discovery.zen.ping.unicast.hosts: ["192.168.9.32", "192.168.9.33","192.168.9.34"]

discovery.zen.minimum_master_nodes: 1

本篇就来说说直接使用log4net的ElasticSearchAppender扩展直接将log写入到es中。

参数说明:


1、cluster.name

当前es的集群名称,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

  

2、node.name

当前节点名称,默认会随机自动指定一个名称,可以修改此名称作为当前节点的名称

一:从nuget下载

3、bootstrap.memory_lock

组建集群时,需要将锁定内存功能关闭。

此参数设置为true时,用于锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。

同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。

    nuget下来的都是开箱可用,如果看源码的话可以在github上找一下log4net.ElasticSearch项目。。

4、discovery.zen.ping.unicast.hosts

设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点格式为:

discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]

图片 1

5、discovery.zen.minimum_master_nodes

设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1(推荐),对于大的集群来说,可以设置大一点的值(2-4),对于三五台节点的集群,必须设为1 。

 

3、性能调优


通过配置每一个终端节点的配置文件“/config/elasticsearch.yml”,可以实现ES环境的性能提升。

  1. App.config配置

3.1、路径配置


1、path.data

path.data:/path/to/data

设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:path.data:/path/to/data1,/path/to/data2

  nuget包下来之后,就可以配置config文件了,其实还是蛮简单的,大家可以根据自己的项目合理的配置里面的各项参数,为了方便大家理解,我在每个配置

2、path.logs

path.logs:/path/to/logs

设置日志文件的存储路径,默认是es根目录下的logs文件夹

项上加了详细的注释,大家可以仔细看看。

3、path.conf

path.conf: /path/to/conf

设置配置文件的存储路径,默认是es根目录下的config文件夹。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
        <!-- 日志的处理类:log4net.ElasticSearch.ElasticSearchAppender -->
        <appender name="ElasticSearchAppender" type="log4net.ElasticSearch.ElasticSearchAppender, log4net.ElasticSearch">

            <!-- ES地址  rolling=true:表示每天一个index(datamipcrm_log_2018.05.31)  -->
            <connectionString value="Scheme=http;Server=192.168.23.145;Index=datamiprm_log;Port=9200;rolling=true"/>
            <!-- 有损配置: 如果配置的buffer满了还没来的及刷新到es中,那么新来的log将会被丢弃。 -->
            <lossy value="false" />
            <evaluator type="log4net.Core.LevelEvaluator">
                <!--
                    表示 小于ERROR级别的日志会进入buffer数组,大于等于这个级别的,直接提交给es。
                    通常情况下,ERROR级别的错误,我们直接塞到ES中,这样更有利于我们发现问题。 DEBUG,INFO WARN ERROR -->
                <threshold value="ERROR" />
            </evaluator>

            <!-- buffer池的阈值50,一旦满了就会触发flush 到 es的动作(bulk api) -->
            <bufferSize value="50" />
        </appender>
        <root>
            <!-- 指定所有的loglevel(DEBUG,INFO,WARN,ERROR)级别都是用 ElasticSearchAppender 处理 -->
            <level value="ALL"/>
            <appender-ref ref="ElasticSearchAppender" />
        </root>
    </log4net>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

4、path.work

path.work: /path/to/work

设置临时文件的存储路径,默认是es根目录下的work文件夹。

 

5、path.plugins

path.plugins: /path/to/plugins

设置插件的存放路径,默认是es根目录下的plugins文件夹

  上面有几点要特别注意一下:

3.2、节点配置


1、node.master

node.master: true

指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。

《1》 bufferSize

2、node.data

node.data: true

指定该节点是否存储索引数据,默认为true。

           这个大家理解成缓存区,方便批量提交到es中,否则的话,过于频繁的和es进行交互,对带宽,对application,es都是比较大的压力。

3.3、分片配置


1、index.number_of_shards

index.number_of_shards: 5

设置默认索引分片个数,默认为5片。

《2》 <threshold value="ERROR" /> 

2、index.number_of_replicas

index.number_of_replicas: 1

设置默认索引副本个数,默认为1个副本。

          有时候我们有这样的需求,我希望ERROR,Fault这种级别的错误不要走buffer,直接提交给es,这样更容易让初创团队发现问题,找到问题,恭喜你,

3.4、网络配置


          上面这个配置就是解决这个事的。

1、network.bind_host

network.bind_host: 192.168.0.1

设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。

 

2、network.publish_host

network.publish_host: 192.168.0.1

设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。

  1. 在AssemblyInfo中追加如下配置。

    // 可以指定所有值,也可以使用以下所示的 "" 预置版本号和修订号 // 方法是按如下所示使用“”: : // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: log4net.Config.XmlConfigurator(Watch = true)]

3、network.host

network.host: 192.168.0.1

这个参数是用来同时设置bind_host和publish_host上面两个参数。

 

4、transport.tcp.port

transport.tcp.port: 9300

设置节点间交互的tcp端口,默认是9300。

  1. 然后就可以写一段测试代码啦。

    namespace ConsoleApp1 {

     class Program
     {
         private static readonly ILog _log = LogManager.GetLogger(typeof(Program));
    
         static void Main(string[] args)
         {
    
            for (int i = 0; i < 1000; i++)
             {
                 try
                 {
                     var m = "1";
    
                     var result = 100 / Convert.ToInt32(m);
                     _log.Info("我要开始记录日志啦");
    
                 }
                 catch (Exception ex)
                 {
                     _log.Error("调用失败" + i, ex);
                     //_log.Info("调用失败" + i, ex);
                     //Console.WriteLine(i);
                 }
             }
    
             Console.Read();
         }
    
     }
    

    }

5、transport.tcp.compress

transport.tcp.compress: true

设置是否压缩tcp传输时的数据,默认为false,不压缩。

 

6、http.port

http.port: 9200

设置对外服务的http端口,默认为9200。

然后通过elasticsearch-head 插件进行查看,各种数据就都在es中了。

7、http.max_content_length

http.max_content_length: 100mb

设置内容的最大容量,默认100mb

图片 2

8、http.enabled

http.enabled: false

是否使用http协议对外提供服务,默认为true,开启。

 

3.5、网关配置


1、gateway.type

gateway.type: local

gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。

二:elasticsearch-header 插件

2、gateway.recover_after_nodes

gateway.recover_after_nodes: 1

设置集群中N个节点启动时进行数据恢复,默认为1。

  关于这个插件的下载,因为google官网被屏蔽,大家如果有VPN的话,可以自行在chrome商店搜索,当然也可以直接下载我的zip包,elasticsearch-head。

3、gateway.recover_after_time

gateway.recover_after_time: 5m

设置初始化数据恢复进程的超时时间,默认是5分钟。

在浏览器中加载插件的时候选择0.1.3.0 文件夹即可

4、gateway.expected_nodes

gateway.expected_nodes: 2

设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。

图片 3

3.6、数据恢复配置


1、cluster.routing.allocation.node_initial_primaries_recoveries

cluster.routing.allocation.node_initial_primaries_recoveries: 4

初始化数据恢复时,并发恢复线程的个数,默认为4。

 

2、cluster.routing.allocation.node_concurrent_recoveries

cluster.routing.allocation.node_concurrent_recoveries: 2

添加删除节点或负载均衡时并发恢复线程的个数,默认为4。

完了之后点击右上边的 “放大镜“ 按钮就可以看到你想看到的UI了。

3、indices.recovery.max_size_per_sec

indices.recovery.max_size_per_sec: 0

设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。

本文由威尼斯手机娱乐官网发布于威尼斯手机娱乐官网,转载请注明出处:小步快跑的公司可以最简化操作直接通过log4net将

上一篇:没有了 下一篇:VS2017调节和测验闪退之Chrome
猜你喜欢
热门排行
精彩图文