نصب Elasticsearch ، Logstash ، Kibana (ELK) به عنوان سرویس ویندوزی

نصب Elasticsearch ، Logstash ، Kibana (ELK) به عنوان سرویس ویندوزی1 - نصب Elasticsearch به عنوان سرویس ویندوزیابتدا دانلود و نصب JDKسپس متغیر JAVA_HOME رو در Environment Variables حتما به صورت System Variable تعریف کرده و مقدار آن را مسیر نصب java تنظیم کنید. مثلا :C:\Program Files\Java\jdk-16.0.1دانلود Elasticsearchبعد دانلود در مسیری دلخواه از حالت فشرده درآورده ، وارد پوشه config شده و به انتهای فایل elasticsearch.yml این تنظیمات را اضافه کنیدnode.name: masternode.master: truenetwork.host: 0.0.0.0 # دسترسی از بیرون cluster.initial_master_nodes: [&quotmaster&quot]xpack.license.self_generated.type: basicالبته برای تمیزی فایل تنظیمات ، می توان موارد را یافته ، از حالت comment درآورده و تغییر دهید.حال وارد پوشه bin شده و cmd.exe را در همین مسیر اجرا و دستور زیر را اجرا کنید.\elasticsearch-service.bat install “<service name>”سپس دستور زیر را اجرا کنید.\elasticsearch-service.bat manager “<service name>”داخل پنجره‌ی باز شده، وارد تب Java بشید و مطمئن شوید که java.io.tmpdir دارای مقدار هستدر صورتی که این مقدار به طور کلی وجود نداشت یا خالی بود، با مسیر دلخواه ایجادش کنید-Djava.io.tmpdir=C:\elasticTempحال می توانید سرویس ویندوزی Elasticsearch را از Services.msc مشاهده ، Service Type آن را از Manual به Automatic تنظیم و سپس Run کنید.بعد چند لحظه که Elasticsearch بالا آمد ، روی آدرس http://localhost:9200/ صفحه زیر قابل مشاهده هست2 – نصب Kibana به عنوان سرویس ویندوزیدانلود Kibanaدر مسیری دلخواه از حالت فشرده درآورده ، وارد پوشه config شده و برای اینکه از بیرون ماشین یا سرور هم بتوانیم به kibana دسترسی داشته باشیم ، تنظیم زیر را به انتهای فایل kibana.yml اضافه کنیدserver.host: &quot0.0.0.0&quotاگر Elasticsearch را در سرور دیگری نصب کرده اید ، عبارت elasticsearch.hosts را با آدرس سرور Elasticsearch مقداردهی کنیدبرای نصب Kibana به عنوان سرویس، لازمه از ابراز NSSM استفاده کنیمبعد از دانلود و اکسترکت NSSM، وارد پوشه‌ای که داخل آن فایل nssm.exe وجود داره بشوید و به روش گفته شده در بالا، PowerShell یا Command Prompt رو اجرا کنید؛ بعد، این دستور رو وارد کنید.\nssm install kibanaمقدار Path را با مسیر فایل kibana.bat ، از پوشه ی kibanaیی که قبلا اکسترکت کرده اید پر کنید.سپس وارد سربرگ Dependencies شده و نام سرویس ویندوزی Elastic search یی که قبلا ساخته اید را بنویسیداگر نام سرویس ویندوزی Elasticsearch را فراموش کرده اید ، روی سرویس مزبور کلیک راست کرده ، در Properties ، مقدار Service name را ببینیدبا این کار تا زمانی که Elastic search بالا نیامده، Kibana اجرا نشود و اگر Elastic search متوقف شد، Kibana هم متوقف شود.سپس وارد سربرگ I/O شده و آدرس فایل‌های Log را به مسیری دلخواه مقداردهی کنیددر آخرین گام ، دکمه Install service را کلیک کنیداکنون در services.msc می توانید سرویس مورد نظر را ببینید.بعد از اجرای سرویس ویندوزی kibana و گذشت زمانی کوتاه [که بستگی به سیستم دارد] ، روی آدرس http://localhost:5601 ، kibana قابل مشاهده است3 – نصب LogStash به عنوان سرویس ویندوزیمی خواهیم لاگ هایی که سمت Mongodb درج می شوند را توسط Logstash به Elasticsearch بفرستیم تا index شوند.دانلود Logstashدانلود درایور جاوایی Mongodb از صفحه ی زیرhttps://dbschema.com/jdbc-driver/MongoDb.htmlتنظیمات در فایل configفایلی با نامی دلخواه مانند logstash.conf ایجاد کرده و با تنظیمات زیر مقداردهی می کنیم :input { jdbc { jdbc_driver_library => &quotF:/.../MongoDbJdbcDriver/mongojdbc3.1.jar&quot jdbc_driver_class => &quotcom.dbschema.MongoJdbcDriver&quot jdbc_connection_string => &quotjdbc:mongodb://<IP>/<MongoDBName>&quot jdbc_validate_connection => true jdbc_user => &quot&quot record_last_run => true last_run_metadata_path => &quotF:/.../path/.stored_sql_last_value_file&quot schedule => &quot*/10 * * * * *&quot clean_run => false use_column_value => true tracking_column => &quotTStamp&quot tracking_column_type => &quotnumeric&quot sql_log_level => &quotdebug&quot statement => &quot var lastValue = :sql_last_value db.TestTbl2.aggregate([ { $project : { '_id': false, 'Title': true, 'CreateDate': true, 'TStamp': { $subtract: [ '$CreateDate', new Date('1970-01-01') ] } } }, { $match: { 'TStamp': {$gt: lastValue} } }, { $limit: 1 }, { $sort:{ 'TStamp': 1 } } ]); &quot } } output { elasticsearch { hosts => [&quotlocalhost:9200&quot] index => &quothbindextest&quot doc_as_upsert => true document_id => &quot%{[document][TStamp]}&quot } stdout { codec => rubydebug }}jdbc_driver_library : مسیر درایور JDBC مربوط به MongoDBjdbc_connection_string : رشته اتصال به MongoDBlast_run_metadata_path : مسیر فایلی که حاوی آخرین مقدار tracking_column ایندکس شدهuse_column_value : آیا tracking_column استفاده شود؟tracking_column :ستون سمت MongoDB که می خوایم با مقدار آن متوجه شویم تا کجا ایندکس شده.ما برای آزمایش ، در کد واکشی ، ستون TStamp که سمت MongoDB وجود نداشت را ساختیم و از آن برای ردگیری استفاده کردیم.اگر ستون مورد نظر از قبل در MongoDB وجود داشته باشد ، تغییرات زیر را باید انجام داد تا Logstash بتواند آن ستون را یافته و از مقدار آن استفاده کندبه مسیر زیر برویدF:\...\logstash-7.13.3\vendor\bundle\jruby\2.5.0\gems\logstash-integration-jdbc-5.0.7\lib\logstash\plugin_mixins\jdbc\jdbc.rb : line 236تابع get_column_value(row) را تغییر دهیدpublicdef get_column_value(row)if !row.has_key?(@tracking_column.to_sym) if !row.dig(:document, @tracking_column).nil? @sql_last_value = row.dig(:document, @tracking_column) elsif !@tracking_column_warning_sent @logger.warn(&quottracking_column not found in dataset.&quot, :tracking_column => @tracking_column) @tracking_column_warning_sent = trueend# If we can't find the tracking column, return the current value in the ivar@sql_last_valueelse# Otherwise send the updated tracking columnrow[@tracking_column.to_sym]endendبا این تغییر ستون مورد نطر را در زیر مجموعه document می یابدtracking_column_type : نوع tracking_column (یا numeric یا timestamp)از مسیر زیر قابل مشاهده استF:\...\logstash-7.13.3\vendor\bundle\jruby\2.5.0\gems\logstash-integration-jdbc-5.0.7\lib\logstash\inputs\jdbc.rb : line 174حال می توان به دو شیوه Logstash را اجرا کرد :اجرا از طریق cmdنصب به صورت سرویس ویندوزی توسط NSSM و اجرااجرای Logstash از طریق cmd1 - ابتدا Cmd را در این مسیر اجرا2 - و دستور زیر را وارد کنیدF:\...\logstash-7.13.3\bin\logstash -fF:\...\config\logstash.confنصب Logstash به عنوان سرویس ویندوزی1 – اجرای cmd به عنوان Administrator2 – اجرای دستور زیرF:\...\nssm-2.24\win64\nssm.exe install <logstash service name> &quotF:\...\logstash-7.13.3\bin\logstash.bat&quot &quot-f F:\...\config\logstash.conf&quotبرای شروعF:\...\nssm-2.24\win64\nssm.exe start <logstash service name>برای خاتمهF:\...\nssm-2.24\win64\nssm.exe stop <logstash service name>برای ویرایشF:\...\nssm-2.24\win64\nssm.exe edit <logstash service name>برای حذفF:\...\nssm-2.24\win64\nssm.exe remove <logstash service name>