আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
Edge Microgateway v. 3.0.x
এই অংশে এজ মাইক্রোগেটওয়ে কীভাবে পরিচালনা ও কনফিগার করতে হয়, তা আলোচনা করা হয়েছে।
ইন্টারনেট সংযোগ থাকলে Edge Microgateway আপগ্রেড করা
এই বিভাগে Edge Microgateway-এর একটি বিদ্যমান ইনস্টলেশন কীভাবে আপগ্রেড করতে হয় তা ব্যাখ্যা করা হয়েছে। আপনি যদি ইন্টারনেট সংযোগ ছাড়াই কাজ করেন, তাহলে ‘আমি কি ইন্টারনেট সংযোগ ছাড়া Edge Microgateway ইনস্টল করতে পারি?’ অংশটি দেখুন।
Apigee পরামর্শ দেয় যে, আপনার প্রোডাকশন এনভায়রনমেন্ট আপগ্রেড করার আগে নতুন ভার্সন দিয়ে আপনার বিদ্যমান কনফিগারেশনটি পরীক্ষা করে নিন।
- Edge Microgateway-এর সর্বশেষ সংস্করণে আপগ্রেড করতে নিম্নলিখিত
npmকমান্ডটি চালান:npm upgrade edgemicro -g
Edge Microgateway-এর একটি নির্দিষ্ট সংস্করণে আপগ্রেড করতে, আপনাকে আপগ্রেড কমান্ডে সংস্করণ নম্বরটি উল্লেখ করতে হবে। আপনি যদি সংস্করণ নম্বর উল্লেখ না করেন, তাহলে সর্বশেষ সংস্করণটি ইনস্টল হবে। উদাহরণস্বরূপ, সংস্করণ 3.0.2-এ আপগ্রেড করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
npm upgrade edgemicro@3.0.2 -g
- ভার্সন নম্বরটি যাচাই করুন। উদাহরণস্বরূপ, যদি আপনি ভার্সন 3.0.2 ইনস্টল করে থাকেন:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.0.2 - অবশেষে, edgemicro-auth প্রক্সির সর্বশেষ সংস্করণে আপগ্রেড করুন:
edgemicro upgradeauth -o org_name -e env_name -u username
কনফিগারেশন পরিবর্তন করা
যেসব কনফিগারেশন ফাইল সম্পর্কে আপনার জানা প্রয়োজন, সেগুলো হলো:
- ডিফল্ট সিস্টেম কনফিগারেশন ফাইল
- নতুনভাবে চালু করা এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সের জন্য ডিফল্ট কনফিগারেশন ফাইল
- চলমান ইনস্ট্যান্সগুলির জন্য ডায়নামিক কনফিগারেশন ফাইল
এই অংশে এই ফাইলগুলো এবং সেগুলো পরিবর্তন করার জন্য আপনার যা জানা প্রয়োজন, তা আলোচনা করা হয়েছে।
ডিফল্ট সিস্টেম কনফিগারেশন ফাইল
আপনি যখন Edge Microgateway ইনস্টল করেন, তখন একটি ডিফল্ট সিস্টেম কনফিগারেশন ফাইল এখানে রাখা হয়:
prefix/lib/node_modules/edgemicro/config/default.yaml
যেখানে prefix হলো npm প্রিফিক্স ডিরেক্টরি। আপনি যদি এই ডিরেক্টরিটি খুঁজে না পান, তাহলে “Where is Edge Microgateway installed” দেখুন।
আপনি যদি সিস্টেম কনফিগারেশন ফাইল পরিবর্তন করেন, তাহলে আপনাকে অবশ্যই Edge Microgateway পুনরায় ইনিশিয়ালাইজ, রিকনফিগার এবং রিস্টার্ট করতে হবে:
edgemicro initedgemicro configure [params]edgemicro start [params]
নতুনভাবে চালু করা এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সগুলির জন্য ডিফল্ট কনফিগারেশন ফাইল
যখন আপনি edgemicro init চালান, তখন উপরে বর্ণিত সিস্টেম কনফিগারেশন ফাইল default.yaml ~/.edgemicro ডিরেক্টরিতে রাখা হয়।
যদি আপনি ~/.edgemicro তে থাকা কনফিগারেশন ফাইলটি পরিবর্তন করেন, তাহলে আপনাকে অবশ্যই Edge Microgateway পুনরায় কনফিগার করে রিস্টার্ট করতে হবে:
edgemicro stopedgemicro configure [params]edgemicro start [params]
চলমান ইনস্ট্যান্সগুলির জন্য ডায়নামিক কনফিগারেশন ফাইল
যখন আপনি edgemicro configure [params] চালান, তখন ~/.edgemicro ফোল্ডারে একটি ডাইনামিক কনফিগারেশন ফাইল তৈরি হয়। ফাইলটির নামকরণ এই প্যাটার্ন অনুযায়ী করা হয়: org - env -config.yaml , যেখানে org এবং env হলো আপনার `Apigee Edge` অর্গানাইজেশন এবং এনভায়রনমেন্টের নাম। আপনি এই ফাইলটি ব্যবহার করে কনফিগারেশনে পরিবর্তন আনতে পারেন এবং তারপর কোনো ডাউনটাইম ছাড়াই তা রিলোড করতে পারেন। উদাহরণস্বরূপ, যদি আপনি একটি প্লাগইন যোগ এবং কনফিগার করেন, তাহলে আপনি কোনো ডাউনটাইম ছাড়াই কনফিগারেশনটি রিলোড করতে পারেন, যেমনটি নিচে ব্যাখ্যা করা হয়েছে।
যদি Edge Microgateway চালু থাকে (জিরো-ডাউনটাইম বিকল্প):
- Edge Microgateway কনফিগারেশন পুনরায় লোড করুন:
edgemicro reload -o org_name -e env_name -k key -s secret
কোথায়:
- org_name হলো আপনার Edge অর্গানাইজেশনের নাম (আপনাকে অবশ্যই একজন অর্গানাইজেশন অ্যাডমিনিস্ট্রেটর হতে হবে)।
- env_name হলো আপনার অর্গের একটি এনভায়রনমেন্ট (যেমন "test" বা "prod")।
- key হলো সেই কী যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
- secret হলো সেই কী, যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
উদাহরণস্বরূপ
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
যদি Edge Microgateway বন্ধ করা হয়:
- Edge মাইক্রোগেটওয়ে পুনরায় চালু করুন:
edgemicro start -o org_name -e env_name -k key -s secret
কোথায়:
- org_name হলো আপনার Edge অর্গানাইজেশনের নাম (আপনাকে অবশ্যই একজন অর্গানাইজেশন অ্যাডমিনিস্ট্রেটর হতে হবে)।
- env_name হলো আপনার প্রতিষ্ঠানের একটি পরিবেশ (যেমন 'test' বা 'prod')।
- key হলো সেই কী যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
- secret হলো সেই কী, যা পূর্বে configure কমান্ডের মাধ্যমে ফেরত দেওয়া হয়েছিল।
উদাহরণস্বরূপ:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
এখানে একটি নমুনা কনফিগারেশন ফাইল দেওয়া হলো। কনফিগারেশন ফাইলের সেটিংস সম্পর্কে বিস্তারিত জানতে, এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স দেখুন।
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
পরিবেশ ভেরিয়েবল সেট করা
যেসব কমান্ড-লাইন ইন্টারফেস কমান্ডের জন্য আপনার Edge অর্গানাইজেশন ও এনভায়রনমেন্টের ভ্যালু প্রয়োজন, এবং Edge Microgateway চালু করার জন্য প্রয়োজনীয় কী (key) ও সিক্রেট (secret) এই এনভায়রনমেন্ট ভেরিয়েবলগুলোতে সংরক্ষণ করা যেতে পারে:
-
EDGEMICRO_ORG -
EDGEMICRO_ENV -
EDGEMICRO_KEY -
EDGEMICRO_SECRET
এই ভেরিয়েবলগুলো সেট করা ঐচ্ছিক। যদি আপনি এগুলো সেট করেন, তাহলে কমান্ড-লাইন ইন্টারফেস (CLI) ব্যবহার করে এজ মাইক্রোগেটওয়ে কনফিগার ও চালু করার সময় এগুলোর মান উল্লেখ করার প্রয়োজন নেই।
এজ মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করা
Apigee Edge Microgateway-তে TLS কনফিগার করার বিষয়ে জানতে নিম্নলিখিত ভিডিওগুলো দেখুন:
| ভিডিও | বর্ণনা |
|---|---|
| একমুখী উত্তরমুখী টিএলএস কনফিগার করুন | Apigee Edge Microgateway-তে TLS কনফিগার করা সম্পর্কে জানুন। এই ভিডিওটিতে TLS ও এর গুরুত্ব সম্পর্কে একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে, Edge Microgateway-তে TLS-এর পরিচিতি তুলে ধরা হয়েছে এবং Northbound One-Way TLS কীভাবে কনফিগার করতে হয় তা দেখানো হয়েছে। |
| দ্বিমুখী উত্তরমুখী টিএলএস কনফিগার করুন | Apigee Edge Microgateway-তে TLS কনফিগার করার উপর এটি দ্বিতীয় ভিডিও। এই ভিডিওতে নর্থবাউন্ড ২-ওয়ে TLS কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। |
| একমুখী এবং দ্বিমুখী দক্ষিণমুখী টিএলএস কনফিগার করুন | Apigee Edge Microgateway-তে TLS কনফিগার করার উপর এই তৃতীয় ভিডিওটিতে সাউথবাউন্ড ১-ওয়ে এবং ২-ওয়ে TLS কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। |
আপনি SSL ব্যবহার করার জন্য মাইক্রোগেটওয়ে সার্ভারটি কনফিগার করতে পারেন। উদাহরণস্বরূপ, SSL কনফিগার করা থাকলে, আপনি এজ মাইক্রোগেটওয়ের মাধ্যমে "https" প্রোটোকল ব্যবহার করে API কল করতে পারেন, যেমন:
https://localhost:8000/myapi
মাইক্রোগেটওয়ে সার্ভারে SSL কনফিগার করতে, এই ধাপগুলো অনুসরণ করুন:
- openssl ইউটিলিটি ব্যবহার করে অথবা আপনার পছন্দের যেকোনো পদ্ধতি অবলম্বন করে একটি SSL সার্টিফিকেট ও কী তৈরি বা সংগ্রহ করুন।
- Edge Microgateway কনফিগারেশন ফাইলে
edgemicro:sslঅ্যাট্রিবিউটটি যোগ করুন। অপশনগুলোর সম্পূর্ণ তালিকার জন্য নিচের টেবিলটি দেখুন। উদাহরণস্বরূপ:edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- Edge Microgateway পুনরায় চালু করুন। আপনি কোন কনফিগারেশন ফাইলটি সম্পাদনা করেছেন (ডিফল্ট ফাইল নাকি রানটাইম কনফিগারেশন ফাইল), তার উপর নির্ভর করে 'কনফিগারেশন পরিবর্তন করা' অংশে বর্ণিত পদক্ষেপগুলি অনুসরণ করুন।
এখানে কনফিগারেশন ফাইলের edgemicro অংশের একটি উদাহরণ দেওয়া হলো, যেখানে SSL কনফিগার করা আছে:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
এখানে সকল সমর্থিত সার্ভার বিকল্পগুলির একটি তালিকা দেওয়া হল:
| বিকল্প | বর্ণনা |
|---|---|
key | একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)। |
cert | একটি ca.cert ফাইলের পাথ (PEM ফরম্যাটে)। |
pfx | PFX ফরম্যাটে ক্লায়েন্টের প্রাইভেট কী, সার্টিফিকেট এবং CA সার্টিফিকেট সম্বলিত একটি pfx ফাইলের পাথ। |
passphrase | প্রাইভেট কী বা PFX-এর পাসফ্রেজ সম্বলিত একটি স্ট্রিং। |
ca | PEM ফরম্যাটে বিশ্বস্ত সার্টিফিকেটগুলোর তালিকা সম্বলিত ফাইলের পাথ। |
ciphers | ব্যবহারযোগ্য সাইফারগুলোর বর্ণনা সম্বলিত একটি স্ট্রিং, যা একটি কোলন (:) দ্বারা পৃথক করা থাকবে। |
rejectUnauthorized | যদি সত্য হয়, তাহলে সরবরাহকৃত CA-এর তালিকার সাথে সার্ভার সার্টিফিকেটটি যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি বার্তা দেখানো হয়। |
secureProtocol | ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণস্বরূপ, SSL-কে সংস্করণ ৩-এ বাধ্যতামূলক করতে SSLv3_method ব্যবহার করা যেতে পারে। |
servername | SNI (সার্ভার নেম ইন্ডিকেশন) TLS এক্সটেনশনের জন্য সার্ভারের নাম। |
requestCert | দ্বিমুখী SSL এর জন্য true; একমুখী SSL এর জন্য false |
ক্লায়েন্ট SSL/TLS বিকল্প ব্যবহার করে
টার্গেট এন্ডপয়েন্টগুলিতে সংযোগ করার সময় আপনি এজ মাইক্রোগেটওয়েকে একটি TLS বা SSL ক্লায়েন্ট হিসেবে কনফিগার করতে পারেন। মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে, SSL/TLS অপশন সেট করার জন্য targets এলিমেন্টটি ব্যবহার করুন।
এই উদাহরণটিতে এমন সেটিংস দেওয়া হয়েছে যা সকল হোস্টের ক্ষেত্রে প্রযোজ্য হবে:
edgemicro:
...
targets:
ssl:
client:
key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueএই উদাহরণে, সেটিংসগুলো শুধুমাত্র নির্দিষ্ট হোস্টের ক্ষেত্রেই প্রয়োগ করা হয়:
edgemicro:
...
targets:
- host: 'myserver.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueএখানে TLS-এর একটি উদাহরণ দেওয়া হলো:
edgemicro:
...
targets:
- host: 'myserver.example.com'
tls:
client:
pfx: /Users/myname/twowayssl/ssl/client.pfx
passphrase: admin123
rejectUnauthorized: trueএখানে সকল সমর্থিত ক্লায়েন্ট অপশনগুলোর একটি তালিকা দেওয়া হলো:
| বিকল্প | বর্ণনা |
|---|---|
pfx | PFX ফরম্যাটে ক্লায়েন্টের প্রাইভেট কী, সার্টিফিকেট এবং CA সার্টিফিকেট সম্বলিত একটি pfx ফাইলের পাথ। |
key | একটি ca.key ফাইলের পাথ (PEM ফরম্যাটে)। |
passphrase | প্রাইভেট কী বা PFX-এর পাসফ্রেজ সম্বলিত একটি স্ট্রিং। |
cert | একটি ca.cert ফাইলের পাথ (PEM ফরম্যাটে)। |
ca | PEM ফরম্যাটে বিশ্বস্ত সার্টিফিকেটগুলোর তালিকা সম্বলিত ফাইলের পাথ। |
ciphers | ব্যবহারযোগ্য সাইফারগুলোর বর্ণনা সম্বলিত একটি স্ট্রিং, যা একটি কোলন (:) দ্বারা পৃথক করা থাকবে। |
rejectUnauthorized | যদি সত্য হয়, তাহলে সরবরাহকৃত CA-এর তালিকার সাথে সার্ভার সার্টিফিকেটটি যাচাই করা হয়। যাচাইকরণ ব্যর্থ হলে, একটি ত্রুটি বার্তা দেখানো হয়। |
secureProtocol | ব্যবহার করার জন্য SSL পদ্ধতি। উদাহরণস্বরূপ, SSL-কে সংস্করণ ৩-এ বাধ্যতামূলক করতে SSLv3_method ব্যবহার করা যেতে পারে। |
servername | SNI (সার্ভার নেম ইন্ডিকেশন) TLS এক্সটেনশনের জন্য সার্ভারের নাম। |
edgemicro-auth প্রক্সি কাস্টমাইজ করা
ডিফল্টরূপে, Edge Microgateway, OAuth2 অথেনটিকেশনের জন্য Apigee Edge-এ ডেপ্লয় করা একটি প্রক্সি ব্যবহার করে। আপনি যখন প্রথমবার edgemicro configure চালান, তখন এই প্রক্সিটি ডেপ্লয় করা হয়। আপনি এই প্রক্সির ডিফল্ট কনফিগারেশন পরিবর্তন করে একটি JSON Web Token (JWT)-এ কাস্টম ক্লেইমের জন্য সাপোর্ট যোগ করতে, টোকেনের মেয়াদ শেষ হওয়ার সময় নির্ধারণ করতে এবং রিফ্রেশ টোকেন তৈরি করতে পারেন। বিস্তারিত জানতে, GitHub-এ ` edgemicro-auth` পেজটি দেখুন।
কাস্টম অথেন্টিকেশন পরিষেবা ব্যবহার করে
ডিফল্টরূপে, Edge Microgateway OAuth2 অথেনটিকেশনের জন্য Apigee Edge-এ ডেপ্লয় করা একটি প্রক্সি ব্যবহার করে। আপনি যখন প্রথমবার edgemicro configure চালান, তখন এই প্রক্সিটি ডেপ্লয় করা হয়। ডিফল্টরূপে, এই প্রক্সির URL-টি Edge Microgateway কনফিগারেশন ফাইলে নিম্নরূপভাবে নির্দিষ্ট করা থাকে:
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
আপনি যদি প্রমাণীকরণের জন্য আপনার নিজস্ব কাস্টম পরিষেবা ব্যবহার করতে চান, তাহলে আপনার পরিষেবাটিকে নির্দেশ করার জন্য কনফিগ ফাইলে থাকা authUri ভ্যালুটি পরিবর্তন করুন। উদাহরণস্বরূপ, আপনার এমন একটি পরিষেবা থাকতে পারে যা পরিচয় যাচাই করার জন্য LDAP ব্যবহার করে।
লগ ফাইল পরিচালনা করা
Edge Microgateway প্রতিটি অনুরোধ এবং প্রতিক্রিয়া সম্পর্কে তথ্য লগ করে। লগ ফাইলগুলি ডিবাগিং এবং সমস্যা সমাধানের জন্য দরকারী তথ্য প্রদান করে।
লগ ফাইলগুলি কোথায় সংরক্ষণ করা হয়
ডিফল্টরূপে, লগ ফাইলগুলো /var/tmp তে সংরক্ষিত হয়।
ডিফল্ট লগ ফাইল ডিরেক্টরি কীভাবে পরিবর্তন করবেন
যে ডিরেক্টরিতে লগ ফাইলগুলো সংরক্ষিত হয়, তা এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে নির্দিষ্ট করা থাকে। আরও দেখুন ‘কনফিগারেশন পরিবর্তন করা’ ।
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
ভিন্ন লগ ফাইল ডিরেক্টরি নির্দিষ্ট করতে dir মানটি পরিবর্তন করুন।
কনসোলে লগ পাঠান
আপনি লগিং এমনভাবে কনফিগার করতে পারেন যাতে লগ তথ্য কোনো লগ ফাইলের পরিবর্তে স্ট্যান্ডার্ড আউটপুটে পাঠানো হয়। এর জন্য to_console ফ্ল্যাগটি true-তে সেট করুন, যেভাবে নিচে দেখানো হয়েছে:
edgemicro:
logging:
to_console: trueএই সেটিংটির মাধ্যমে লগগুলো স্ট্যান্ডার্ড আউটপুটে পাঠানো হবে। বর্তমানে, আপনি একই সাথে স্ট্যান্ডার্ড আউটপুট (stdout) এবং একটি লগ ফাইলে লগ পাঠাতে পারবেন না।
লগিং লেভেল কীভাবে সেট করবেন
আপনি এই লগ লেভেলগুলো সেট করতে পারেন: info , warn , এবং error । info লেভেলটি ব্যবহার করার পরামর্শ দেওয়া হয়। এটি সমস্ত API অনুরোধ এবং প্রতিক্রিয়া লগ করে এবং এটিই ডিফল্ট।
লগ ব্যবধান কীভাবে পরিবর্তন করবেন
আপনি Edge Microgateway কনফিগারেশন ফাইলে এই ব্যবধানগুলো নির্ধারণ করতে পারেন। আরও দেখুন ‘কনফিগারেশন পরিবর্তন করা’ ।
পরিবর্তনযোগ্য বৈশিষ্ট্যগুলো হলো:
- stats_log_interval : (ডিফল্ট: ৬০) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ডটি এপিআই লগ ফাইলে লেখা হয়।
- rotate_interval : (ডিফল্ট: ২৪) লগ ফাইল ঘোরানোর ব্যবধান, ঘণ্টায়। উদাহরণস্বরূপ:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
লগ ফাইল রক্ষণাবেক্ষণের ভালো অভ্যাস
সময়ের সাথে সাথে লগ ফাইলের ডেটা জমা হতে থাকায়, Apigee আপনাকে নিম্নলিখিত পদ্ধতিগুলো অবলম্বন করার পরামর্শ দেয়:
- যেহেতু লগ ফাইলগুলো বেশ বড় হয়ে যেতে পারে, তাই নিশ্চিত করুন যে লগ ফাইল ডিরেক্টরিতে পর্যাপ্ত জায়গা আছে। নিম্নলিখিত বিভাগগুলো দেখুন: লগ ফাইলগুলো কোথায় সংরক্ষিত হয় এবং কীভাবে ডিফল্ট লগ ফাইল ডিরেক্টরি পরিবর্তন করবেন ।
- সপ্তাহে অন্তত একবার লগ ফাইলগুলো মুছে ফেলুন অথবা একটি আলাদা আর্কাইভ ডিরেক্টরিতে সরিয়ে নিন।
- আপনার নীতি যদি লগ মুছে ফেলা হয়, তাহলে আপনি পুরোনো লগগুলো সরিয়ে (পরিষ্কার করতে)
edgemicro log -cCLI কমান্ডটি ব্যবহার করতে পারেন।
লগ ফাইলের নামকরণের নিয়ম
প্রতিটি Edge Microgateway ইনস্ট্যান্স তিন ধরনের লগ ফাইল তৈরি করে:
- api - Edge Microgateway-এর মাধ্যমে প্রবাহিত সমস্ত অনুরোধ এবং প্রতিক্রিয়া লগ করে। API কাউন্টার (পরিসংখ্যান) এবং ত্রুটিগুলিও এই ফাইলে লগ করা হয়।
- err - stderr-এ পাঠানো যেকোনো কিছু লগ করে।
- out - stdout-এ পাঠানো যেকোনো কিছু লগ করে।
এই হলো নামকরণের রীতি:
edgemicro-<Host Name>-<Instance ID>-<Log Type>.log
উদাহরণস্বরূপ:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log
লগ ফাইলের বিষয়বস্তু সম্পর্কে
যোগ করা হয়েছে: v2.3.3
ডিফল্টরূপে, লগিং পরিষেবা ডাউনলোড করা প্রক্সি, প্রোডাক্ট এবং JSON ওয়েব টোকেন (JWT)-এর JSON বাদ দেয়। আপনি যদি এই অবজেক্টগুলো লগ ফাইলে আউটপুট করতে চান, তাহলে Edge Microgateway চালু করার সময় DEBUG=* সেট করুন। উদাহরণস্বরূপ:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
'api' লগ ফাইলের বিষয়বস্তু
'api' লগ ফাইলে Edge Microgateway-এর মাধ্যমে অনুরোধ এবং প্রতিক্রিয়ার প্রবাহ সম্পর্কে বিস্তারিত তথ্য থাকে। 'api' লগ ফাইলগুলোর নামকরণ এইভাবে করা হয়:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
Edge Microgateway-তে করা প্রতিটি অনুরোধের জন্য, 'api' লগ ফাইলে চারটি ইভেন্ট রেকর্ড করা হয়:
- ক্লায়েন্টের কাছ থেকে আগত অনুরোধ
- লক্ষ্যবস্তুর কাছে বহির্গামী অনুরোধ করা হয়েছে
- লক্ষ্যবস্তু থেকে আগত প্রতিক্রিয়া
- ক্লায়েন্টের কাছে বহির্গামী প্রতিক্রিয়া
লগ ফাইলগুলোকে আরও সংক্ষিপ্ত করার জন্য এই প্রতিটি আলাদা এন্ট্রিকে একটি সংক্ষিপ্ত সংকেতে উপস্থাপন করা হয়। এখানে চারটি ইভেন্টের প্রত্যেকটির প্রতিনিধিত্বকারী চারটি নমুনা এন্ট্রি দেওয়া হলো। লগ ফাইলে, এগুলো দেখতে এইরকম (লাইন নম্বরগুলো শুধুমাত্র ডকে রেফারেন্সের জন্য, এগুলো লগ ফাইলে দেখা যায় না)।
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
চলুন, এক এক করে সেগুলো দেখা যাক:
১. ক্লায়েন্টের কাছ থেকে আসা অনুরোধের নমুনা:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- req - ঘটনাটিকে শনাক্ত করে। এক্ষেত্রে, ক্লায়েন্টের পক্ষ থেকে করা অনুরোধ।
- m - অনুরোধে ব্যবহৃত HTTP ভার্ব।
- u - URL-এর বেসপ্যাথের পরবর্তী অংশ।
- h - যে হোস্ট এবং পোর্ট নম্বরে Edge Microgateway শুনছে।
- r - দূরবর্তী হোস্ট এবং পোর্ট যেখান থেকে ক্লায়েন্টের অনুরোধটি পাঠানো হয়েছিল।
- i - অনুরোধ আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে। প্রতিটি অনুরোধকে একটি অনন্য অনুরোধ আইডি দেওয়া হয়। অনুরোধ আইডি দ্বারা লগ রেকর্ডগুলোর মধ্যে সম্পর্ক স্থাপন করলে টার্গেটের লেটেন্সি সম্পর্কে মূল্যবান ধারণা পাওয়া যেতে পারে।
- d - এজ মাইক্রোগেটওয়ে দ্বারা অনুরোধটি গৃহীত হওয়ার পর থেকে অতিবাহিত সময় (মিলিসেকেন্ডে)। উপরের উদাহরণে, অনুরোধ ০-এর জন্য টার্গেটের প্রতিক্রিয়া ৭ মিলিসেকেন্ড পরে গৃহীত হয়েছিল (লাইন ৩), এবং অতিরিক্ত ৪ মিলিসেকেন্ড পরে প্রতিক্রিয়াটি ক্লায়েন্টের কাছে পাঠানো হয়েছিল (লাইন ৪)। অন্য কথায়, মোট অনুরোধ লেটেন্সি ছিল ১১ মিলিসেকেন্ড, যার মধ্যে ৭ মিলিসেকেন্ড সময় নিয়েছিল টার্গেট এবং ৪ মিলিসেকেন্ড সময় নিয়েছিল এজ মাইক্রোগেটওয়ে নিজে।
২. লক্ষ্যবস্তুর কাছে পাঠানো বহির্গামী অনুরোধের নমুনা:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- treq - ইভেন্টটি শনাক্ত করে। এক্ষেত্রে, এটি হলো টার্গেট রিকোয়েস্ট।
- m - লক্ষ্য অনুরোধে ব্যবহৃত HTTP ভার্ব।
- u - URL-এর বেসপ্যাথের পরবর্তী অংশ।
- h - ব্যাকএন্ড টার্গেটের হোস্ট এবং পোর্ট নম্বর।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে।
৩. লক্ষ্যবস্তু থেকে আগত প্রতিক্রিয়ার নমুনা
1436403888672 info tres s=200, d=7, i=0
1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- tres - ঘটনাটিকে চিহ্নিত করে। এক্ষেত্রে, লক্ষ্য প্রতিক্রিয়া।
- s - HTTP প্রতিক্রিয়ার স্থিতি।
- d - সময়কাল (মিলিসেকেন্ডে)। টার্গেট কর্তৃক এপিআই কলটি সম্পন্ন হতে যে সময় লাগে।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে।
৪. ক্লায়েন্টের প্রতি বহির্গামী প্রতিক্রিয়ার নমুনা
1436403888676 info res s=200, d=11, i=0
1436403888651 - ইউনিক্স তারিখ স্ট্যাম্প
- তথ্য - এটি প্রসঙ্গের উপর নির্ভর করে। লগ লেভেলের উপর নির্ভর করে এটি তথ্য, সতর্কতা বা ত্রুটি হতে পারে। পরিসংখ্যান রেকর্ডের জন্য এটি 'stats', সতর্কতার জন্য 'warn', বা ত্রুটির জন্য 'error' হতে পারে।
- res - ঘটনাটিকে শনাক্ত করে। এক্ষেত্রে, ক্লায়েন্টের প্রতি প্রতিক্রিয়া।
- s - HTTP প্রতিক্রিয়ার স্থিতি।
- d - সময়কাল, মিলিসেকেন্ডে। এটি হলো এপিআই কলটির মোট সময়, যার মধ্যে টার্গেট এপিআই এবং এজ মাইক্রোগেটওয়ের নিজস্ব সময় অন্তর্ভুক্ত।
- i - লগ এন্ট্রির আইডি। চারটি ইভেন্ট এন্ট্রিই এই আইডিটি ব্যবহার করবে।
লগ ফাইল সময়সূচী
`rotate_interval` কনফিগারেশন অ্যাট্রিবিউট দ্বারা নির্দিষ্ট বিরতিতে লগ ফাইলগুলি ঘোরানো হয়। ঘূর্ণন বিরতির মেয়াদ শেষ না হওয়া পর্যন্ত একই লগ ফাইলে এন্ট্রি যুক্ত হতে থাকবে। তবে, প্রতিবার Edge Microgateway পুনরায় চালু হলে এটি একটি নতুন UID পায় এবং এই UID দিয়ে নতুন এক সেট লগ ফাইল তৈরি করে। আরও দেখুন ‘লগ ফাইল রক্ষণাবেক্ষণের উত্তম অভ্যাস’ ।
ত্রুটির বার্তা
কিছু লগ এন্ট্রিতে ত্রুটির বার্তা থাকবে। ত্রুটিগুলো কোথায় এবং কেন ঘটছে তা শনাক্ত করতে, এজ মাইক্রোগেটওয়ে ত্রুটি রেফারেন্সটি দেখুন।
এজ মাইক্রোগেটওয়ে কনফিগারেশন রেফারেন্স
কনফিগারেশন ফাইলের অবস্থান
এই বিভাগে বর্ণিত কনফিগারেশন অ্যাট্রিবিউটগুলো এজ মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে অবস্থিত। আরও দেখুন ‘কনফিগারেশন পরিবর্তন করা’ ।
edge_config অ্যাট্রিবিউট
এই সেটিংসগুলো Edge Microgateway ইনস্ট্যান্স এবং Apigee Edge-এর মধ্যেকার মিথস্ক্রিয়া কনফিগার করতে ব্যবহৃত হয়।
- বুটস্ট্র্যাপ : (ডিফল্ট: কোনোটি নয়) একটি ইউআরএল যা Apigee Edge-এ চলমান একটি Edge Microgateway-নির্দিষ্ট পরিষেবাকে নির্দেশ করে। Edge Microgateway, Apigee Edge-এর সাথে যোগাযোগের জন্য এই পরিষেবাটি ব্যবহার করে। আপনি যখন পাবলিক/প্রাইভেট কী পেয়ার তৈরি করার জন্য `
edgemicro genkeysকমান্ডটি চালান, তখন এই ইউআরএলটি ফেরত আসে। বিস্তারিত জানার জন্য “ Setting up and configuring Edge Microgateway” দেখুন। - jwt_public_key : (ডিফল্ট: কোনোটি নয়) একটি URL যা Apigee Edge-এ ডেপ্লয় করা Edge Microgateway প্রক্সিকে নির্দেশ করে। এই প্রক্সিটি ক্লায়েন্টদের স্বাক্ষরিত অ্যাক্সেস টোকেন দেওয়ার জন্য একটি অথেনটিকেশন এন্ডপয়েন্ট হিসেবে কাজ করে। প্রক্সি ডেপ্লয় করার জন্য ` edgemicro configure` কমান্ডটি চালালে এই URL-টি ফেরত আসে। বিস্তারিত জানতে “ Setting up and configuring Edge Microgateway” দেখুন।
- quotaUri : আপনি যদি আপনার অর্গে ডেপ্লয় করা
edgemicro-authপ্রক্সির মাধ্যমে কোটা পরিচালনা করতে চান, তাহলে এই কনফিগ প্রপার্টিটি সেট করুন। এই প্রপার্টিটি সেট করা না থাকলে, কোটা এন্ডপয়েন্ট ডিফল্টভাবে অভ্যন্তরীণ Edge Microgateway এন্ডপয়েন্ট ব্যবহার করবে।edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
এই বৈশিষ্ট্যটি ব্যবহার করতে, আপনাকে প্রথমে আপনার অর্গে
edgemicro-authপ্রক্সির 3.0.5 বা তার পরবর্তী সংস্করণ স্থাপন করতে হবে। বিস্তারিত জানতে, edgemicro-auth প্রক্সি আপগ্রেড করা দেখুন।
এজমাইক্রো বৈশিষ্ট্য
এই সেটিংগুলো এজ মাইক্রোগেটওয়ে প্রসেসকে কনফিগার করে।
- পোর্ট : (ডিফল্ট: ৮০০০) যে পোর্ট নম্বরে এজ মাইক্রোগেটওয়ে প্রসেসটি শোনে।
- max_connections : (ডিফল্ট: -1) এটি নির্দিষ্ট করে যে Edge Microgateway একই সাথে সর্বোচ্চ কতগুলো ইনকামিং কানেকশন গ্রহণ করতে পারবে। এই সংখ্যা অতিক্রম করা হলে, নিম্নলিখিত স্ট্যাটাসটি ফেরত দেওয়া হয়:
res.statusCode = 429; // Too many requests - max_connections_hard : (ডিফল্ট: -1) সংযোগটি বন্ধ করে দেওয়ার আগে Edge Microgateway একযোগে সর্বাধিক যতগুলো অনুরোধ গ্রহণ করতে পারে। এই সেটিংটি ডিনায়াল অফ সার্ভিস আক্রমণ প্রতিরোধ করার জন্য তৈরি করা হয়েছে। সাধারণত, এটিকে max_connections-এর চেয়ে বড় কোনো সংখ্যায় সেট করুন।
- লগিং :
- স্তর : (ডিফল্ট: ত্রুটি)
- তথ্য - একটি এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সের মধ্য দিয়ে প্রবাহিত সমস্ত অনুরোধ এবং প্রতিক্রিয়া লগ করে।
- সতর্ক - শুধুমাত্র সতর্কতামূলক বার্তা লগ করে।
- ত্রুটি - শুধুমাত্র ত্রুটির বার্তা লগ করে।
- ডিরেক্টরি : (ডিফল্ট: /var/tmp) যে ডিরেক্টরিতে লগ ফাইলগুলো সংরক্ষিত হয়।
- stats_log_interval : (ডিফল্ট: ৬০) ব্যবধান, সেকেন্ডে, যখন পরিসংখ্যান রেকর্ডটি এপিআই লগ ফাইলে লেখা হয়।
- rotate_interval : (ডিফল্ট: ২৪) লগ ফাইল ঘোরানোর ব্যবধান, ঘণ্টায়।
- স্তর : (ডিফল্ট: ত্রুটি)
- প্লাগইন : প্লাগইনগুলি এজ মাইক্রোগেটওয়েতে কার্যকারিতা যোগ করে। প্লাগইন তৈরি করার বিষয়ে বিস্তারিত জানতে, কাস্টম প্লাগইন তৈরি করুন দেখুন।
- dir : ./gateway ডিরেক্টরি থেকে ./plugins ডিরেক্টরি পর্যন্ত একটি আপেক্ষিক পথ, অথবা একটি পরম পথ।
- ক্রম : আপনার এজ মাইক্রোগেটওয়ে ইনস্ট্যান্সে যোগ করার জন্য প্লাগইন মডিউলগুলির একটি তালিকা। মডিউলগুলি এখানে নির্দিষ্ট করা ক্রমেই কার্যকর হবে।
- ডিবাগ: এজ মাইক্রোগেটওয়ে প্রসেসে রিমোট ডিবাগিং যোগ করে।
- পোর্ট : যে পোর্ট নম্বরে লিসেন করতে হবে। উদাহরণস্বরূপ, আপনার IDE ডিবাগারকে এই পোর্টে লিসেন করার জন্য সেট করুন।
- args : ডিবাগ প্রক্রিয়ার জন্য আর্গুমেন্ট। উদাহরণস্বরূপ:
args --nolazy
- config_change_poll_interval: (ডিফল্ট: ৬০০ সেকেন্ড) Edge Microgateway পর্যায়ক্রমে একটি নতুন কনফিগারেশন লোড করে এবং কোনো পরিবর্তন হলে রিলোড করে। এই পোলিং Edge-এ করা যেকোনো পরিবর্তন (যেমন প্রোডাক্ট, মাইক্রোগেটওয়ে-অ্যাওয়্যার প্রক্সি ইত্যাদির পরিবর্তন) এবং সেইসাথে স্থানীয় কনফিগারেশন ফাইলে করা পরিবর্তনগুলোও শনাক্ত করে।
- disable_config_poll_interval: (ডিফল্ট: false) স্বয়ংক্রিয় পরিবর্তন পোলিং বন্ধ করতে এটিকে true- তে সেট করুন।
- request_timeout : নির্দিষ্ট অনুরোধগুলির জন্য একটি টাইমআউট নির্ধারণ করে। টাইমআউটটি সেকেন্ডে সেট করা হয়। টাইমআউট হলে, Edge Microgateway একটি 504 স্ট্যাটাস কোড দিয়ে সাড়া দেয়। (v2.4.x-এ যোগ করা হয়েছে)
হেডার অ্যাট্রিবিউট
এই সেটিংসগুলো নির্ধারণ করে যে নির্দিষ্ট HTTP হেডারগুলোকে কীভাবে বিবেচনা করা হবে।
- x-forwarded-for : (ডিফল্ট: true) টার্গেটে x-forwarded-for হেডার পাঠানো আটকাতে এটিকে false-এ সেট করুন। মনে রাখবেন, যদি রিকোয়েস্টে কোনো x-forwarded-for হেডার থাকে, তাহলে Edge Analytics-এ এর ভ্যালু client-ip ভ্যালুতে সেট করা হবে।
- x-forwarded-host : (ডিফল্ট: true) টার্গেটে x-forwarded-host হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
- x-request-id : (ডিফল্ট: true) টার্গেটে x-request-id হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
- x-response-time : (ডিফল্ট: true) টার্গেটে x-response-time হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
- via : (ডিফল্ট: true) টার্গেটে via হেডার পাঠানো আটকাতে এটিকে false সেট করুন।
ওঅথ অ্যাট্রিবিউট
এই সেটিংগুলো নির্ধারণ করে যে এজ মাইক্রোগেটওয়ে কীভাবে ক্লায়েন্ট প্রমাণীকরণ প্রয়োগ করবে।
- allowNoAuthorization : (ডিফল্ট: false) যদি এটি true সেট করা হয়, তাহলে API কলগুলো কোনো Authorization হেডার ছাড়াই Edge Microgateway-এর মধ্য দিয়ে যেতে পারবে। Authorization হেডার আবশ্যক করতে এটি false সেট করুন (ডিফল্ট)।
- allowInvalidAuthorization : (ডিফল্ট: false) যদি এটি true সেট করা হয়, তাহলে Authorization হেডারে দেওয়া টোকেনটি অবৈধ বা মেয়াদোত্তীর্ণ হলেও API কলগুলোকে পাস করার অনুমতি দেওয়া হবে। বৈধ টোকেন আবশ্যক করতে এটি false সেট করুন (ডিফল্ট)।
- অথরাইজেশন-হেডার : (ডিফল্ট: Authorization: Bearer) এজ মাইক্রোগেটওয়েতে অ্যাক্সেস টোকেন পাঠানোর জন্য ব্যবহৃত হেডার। যদি টার্গেটের অন্য কোনো উদ্দেশ্যে Authorization হেডারটি ব্যবহার করার প্রয়োজন হয়, তবে আপনি ডিফল্টটি পরিবর্তন করতে চাইতে পারেন।
- api-key-header : (ডিফল্ট: x-api-key) Edge Microgateway-তে একটি API কী পাঠানোর জন্য ব্যবহৃত হেডার বা কোয়েরি প্যারামিটারের নাম। আরও দেখুন একটি API কী ব্যবহার করা ।
- keep-authorization-header : (ডিফল্ট: false) যদি এটি true সেট করা হয়, তাহলে অনুরোধে পাঠানো Authorization হেডারটি টার্গেটে পাঠানো হয় (এটি সংরক্ষিত থাকে)।
- allowOAuthOnly -- যদি এটি 'true' সেট করা হয়, তাহলে প্রতিটি API-কে অবশ্যই একটি Bearer Access Token সহ Authorization হেডার বহন করতে হবে। এটি আপনাকে শুধুমাত্র OAuth নিরাপত্তা মডেল ব্যবহারের অনুমতি দেয় (পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যতা বজায় রেখে)। (২.৪.x সংস্করণে যুক্ত করা হয়েছে)
- allowAPIKeyOnly -- যদি এটি 'true' সেট করা হয়, তাহলে প্রতিটি API-কে অবশ্যই একটি x-api-key হেডার (অথবা একটি কাস্টম লোকেশন) এবং একটি API Key বহন করতে হবে। এটি আপনাকে শুধুমাত্র API key নিরাপত্তা মডেলকে অনুমতি দেওয়ার সুযোগ দেয় (ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রেখে)। (২.৪.x সংস্করণে যোগ করা হয়েছে)
- gracePeriod -- এই প্যারামিটারটি আপনার সিস্টেম ক্লক এবং JWT অথরাইজেশন টোকেনে উল্লেখিত Not Before (nbf) বা Issued At (iat) সময়ের মধ্যে সামান্য অমিলের কারণে সৃষ্ট ত্রুটি প্রতিরোধ করতে সাহায্য করে। এই ধরনের অমিলের জন্য প্রয়োজনীয় সেকেন্ডের সংখ্যা অনুযায়ী এই প্যারামিটারটি সেট করুন। (সংযোজিত: 2.5.7)
প্লাগইন-নির্দিষ্ট বৈশিষ্ট্য
প্রতিটি প্লাগইনের কনফিগারযোগ্য অ্যাট্রিবিউটগুলোর বিশদ বিবরণের জন্য ‘প্লাগইন ব্যবহার’ দেখুন।
প্রক্সি ফিল্টার করা
একটি Edge Microgateway ইনস্ট্যান্স কোন কোন মাইক্রোগেটওয়ে-অ্যাওয়ার প্রক্সি প্রসেস করবে, তা আপনি ফিল্টার করতে পারেন। Edge Microgateway চালু হওয়ার সময়, এটি যে অর্গানাইজেশনের সাথে যুক্ত, সেখানকার সমস্ত মাইক্রোগেটওয়ে-অ্যাওয়ার প্রক্সি ডাউনলোড করে। মাইক্রোগেটওয়ে কোন কোন প্রক্সি প্রসেস করবে তা সীমিত করতে নিম্নলিখিত কনফিগারেশনটি ব্যবহার করুন। উদাহরণস্বরূপ, এই কনফিগারেশনটি মাইক্রোগেটওয়ের প্রসেস করার জন্য প্রক্সিগুলোকে তিনটিতে সীমিত করে: edgemicro_proxy-1 , edgemicro_proxy-2 , এবং edgemicro_proxy-3 ।
proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
অ্যানালিটিক্স পুশ ফ্রিকোয়েন্সি কনফিগার করা
Edge Microgateway কত ঘন ঘন Apigee-তে অ্যানালিটিক্স ডেটা পাঠাবে তা নিয়ন্ত্রণ করতে এই কনফিগারেশন প্যারামিটারগুলি ব্যবহার করুন:
- বাফারসাইজ (ঐচ্ছিক): সবচেয়ে পুরোনো রেকর্ডগুলো বাদ দেওয়া শুরু করার আগে বাফারটি সর্বাধিক যতগুলো অ্যানালিটিক্স রেকর্ড ধারণ করতে পারে। ডিফল্ট: ১০০০০
- batchSize (ঐচ্ছিক): Apigee-তে পাঠানো অ্যানালিটিক্স রেকর্ডের ব্যাচের সর্বোচ্চ আকার। ডিফল্ট: ৫০০
- flushInterval (ঐচ্ছিক): Apigee-তে পাঠানো অ্যানালিটিক্স রেকর্ডের প্রতিটি ব্যাচ ফ্লাশ করার মধ্যবর্তী মিলিসেকেন্ডের সংখ্যা। ডিফল্ট: ৫০০০
উদাহরণস্বরূপ:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
মাস্কিং অ্যানালিটিক্স ডেটা
নিম্নলিখিত কনফিগারেশনটি এজ অ্যানালিটিক্সে রিকোয়েস্ট পাথের তথ্য প্রদর্শিত হওয়া থেকে বিরত রাখে। রিকোয়েস্ট URI এবং/অথবা রিকোয়েস্ট পাথ মাস্ক করতে মাইক্রোগেটওয়ে কনফিগারেশনে নিম্নলিখিতটি যোগ করুন। মনে রাখবেন যে, URI-টি রিকোয়েস্টের হোস্টনেম এবং পাথ অংশ নিয়ে গঠিত।
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
এজ অ্যানালিটিক্সে এপিআই কল পৃথকীকরণ
আপনি অ্যানালিটিক্স প্লাগইনটি কনফিগার করে একটি নির্দিষ্ট API পাথকে আলাদা করতে পারেন, যাতে এটি Edge Analytics ড্যাশবোর্ডগুলিতে একটি পৃথক প্রক্সি হিসাবে প্রদর্শিত হয়। উদাহরণস্বরূপ, আপনি ড্যাশবোর্ডে একটি হেলথ চেক API-কে আলাদা করতে পারেন, যাতে এটিকে আসল API প্রক্সি কলের সাথে গুলিয়ে ফেলা না হয়। অ্যানালিটিক্স ড্যাশবোর্ডে, আলাদা করা প্রক্সিগুলি এই নামকরণের ধরণ অনুসরণ করে:
edgemicro_proxyname-health
নিম্নলিখিত চিত্রটি অ্যানালিটিক্স ড্যাশবোর্ডে দুটি পৃথক প্রক্সি দেখাচ্ছে: edgemicro_hello-health এবং edgemicro_mock-health :

অ্যানালিটিক্স ড্যাশবোর্ডে রিলেটিভ এবং অ্যাবসোলিউট পাথকে আলাদা প্রক্সি হিসেবে পৃথক করতে এই প্যারামিটারগুলো ব্যবহার করুন:
- relativePath (ঐচ্ছিক): অ্যানালিটিক্স ড্যাশবোর্ডে আলাদা করার জন্য একটি আপেক্ষিক পথ নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি আপনি
/healthcheckনির্দিষ্ট করেন, তাহলে/healthcheckপথযুক্ত সমস্ত API কল ড্যাশবোর্ডেedgemicro_ proxyname -healthহিসাবে প্রদর্শিত হবে। মনে রাখবেন যে এই ফ্ল্যাগটি প্রক্সি বেসপাথকে উপেক্ষা করে। বেসপাথ সহ একটি সম্পূর্ণ পথের উপর ভিত্তি করে আলাদা করতে,proxyPathফ্ল্যাগটি ব্যবহার করুন। - proxyPath (ঐচ্ছিক): অ্যানালিটিক্স ড্যাশবোর্ডে আলাদা করার জন্য, প্রক্সি বেসপাথ সহ একটি সম্পূর্ণ API প্রক্সি পাথ নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি আপনি
/mocktarget/healthcheckনির্দিষ্ট করেন, যেখানে/mocktargetহলো প্রক্সি বেসপাথ, তাহলে/mocktarget/healthcheckপাথের সমস্ত API কল ড্যাশবোর্ডেedgemicro_ proxyname -healthহিসাবে প্রদর্শিত হবে।
উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশনে, যে কোনো API পাথ যাতে /healthcheck অন্তর্ভুক্ত থাকবে, তা অ্যানালিটিক্স প্লাগইন দ্বারা পৃথক করা হবে। এর মানে হলো, অ্যানালিটিক্স ড্যাশবোর্ডে /foo/healthcheck এবং /foo/bar/healthcheck edgemicro_ proxyname -health নামক একটি পৃথক প্রক্সি হিসেবে পৃথক করা হবে।
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
relativePath: /healthcheckনিম্নলিখিত কনফিগারেশনে, /mocktarget/healthcheck প্রক্সি পাথযুক্ত যেকোনো API, অ্যানালিটিক্স ড্যাশবোর্ডে edgemicro_ proxyname -health নামে একটি পৃথক প্রক্সি হিসাবে আলাদা করা হবে।
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
proxyPath: /mocktarget/healthcheckকোম্পানির ফায়ারওয়ালের পিছনে এজ মাইক্রোগেটওয়ে স্থাপন করা
v2.4.x সমর্থিত
যদি Edge Microgateway কোনো ফায়ারওয়ালের পিছনে ইনস্টল করা থাকে, তাহলে গেটওয়েটি Apigee Edge-এর সাথে যোগাযোগ করতে সক্ষম নাও হতে পারে। এই ক্ষেত্রে, আপনি দুটি বিকল্প বিবেচনা করতে পারেন:
বিকল্প ১:
প্রথম উপায়টি হলো মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে edgemicro: proxy_tunnel অপশনটিকে true-তে সেট করা:
edge_config:
proxy: http://10.224.16.85:3128
proxy_tunnel: trueযখন proxy_tunnel-এর মান true হয়, Edge Microgateway একটিমাত্র TCP সংযোগের মাধ্যমে HTTP অনুরোধগুলিকে টানেল করার জন্য HTTP CONNECT পদ্ধতি ব্যবহার করে। (প্রক্সি কনফিগার করার জন্য ব্যবহৃত এনভায়রনমেন্ট ভেরিয়েবলগুলিতে TLS সক্রিয় করা থাকলেও একই নিয়ম প্রযোজ্য হয়)।
বিকল্প ২:
দ্বিতীয় বিকল্পটি হলো একটি প্রক্সি নির্দিষ্ট করা এবং মাইক্রোগেটওয়ে কনফিগারেশন ফাইলে proxy_tunnel-কে false সেট করা। উদাহরণস্বরূপ:
edge_config:
proxy: http://10.224.16.85:3128
proxy_tunnel: falseএক্ষেত্রে, আপনি যে প্রতিটি HTTP প্রক্সি ব্যবহার করতে চান তার জন্য হোস্ট নিয়ন্ত্রণ করতে, অথবা কোন হোস্টগুলো Edge Microgateway প্রক্সি পরিচালনা করবে না তা নির্ধারণ করতে, নিম্নলিখিত ভেরিয়েবলগুলো সেট করতে পারেন: HTTP_PROXY , HTTPS_PROXY , এবং NO_PROXY ।
আপনি NO_PROXY-কে কমা দিয়ে বিভক্ত এমন ডোমেইনগুলোর একটি তালিকা হিসেবে সেট করতে পারেন, যেগুলোতে Edge Microgateway প্রক্সি করবে না। উদাহরণস্বরূপ:
export NO_PROXY='localhost,localhost:8080'
HTTP_PROXY এবং HTTPS_PROXY-কে সেই HTTP প্রক্সি এন্ডপয়েন্টে সেট করুন যেখানে Edge Microgateway মেসেজ পাঠাতে পারে। উদাহরণস্বরূপ:
export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786'
এই ভেরিয়েবলগুলো সম্পর্কে আরও তথ্যের জন্য, দেখুন https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables
আরও দেখুন
Apigee কমিউনিটিতে কোম্পানির ফায়ারওয়ালের পিছনে Edge Microgateway কীভাবে সেট আপ করবেন
মাইক্রোগেটওয়ে-সচেতন প্রক্সিতে ওয়াইল্ডকার্ড ব্যবহার
আপনি একটি edgemicro_* (মাইক্রোগেটওয়ে-অ্যাওয়ার) প্রক্সির বেস পাথে এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, /team/*/members- এর একটি বেস পাথ ক্লায়েন্টদেরকে https://[host]/team/blue/members এবং https://[host]/team/green/members কল করার সুযোগ দেয়, যার জন্য নতুন টিমগুলোকে সাপোর্ট করার জন্য আপনাকে নতুন এপিআই প্রক্সি তৈরি করতে হয় না। উল্লেখ্য যে /**/ সমর্থিত নয়।
গুরুত্বপূর্ণ: Apigee বেস পাথের প্রথম উপাদান হিসেবে ওয়াইল্ডকার্ড "*" ব্যবহার সমর্থন করে না। উদাহরণস্বরূপ, এটি সমর্থিত নয়: /*/ search।
ঘূর্ণায়মান JWT কী
প্রাথমিকভাবে একটি JWT তৈরি করার কিছু সময় পরে, Edge এনক্রিপ্টেড KVM-এ সংরক্ষিত পাবলিক/প্রাইভেট কী পেয়ারটি পরিবর্তন করার প্রয়োজন হতে পারে। নতুন কী পেয়ার তৈরি করার এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়।
Edge Microgateway কীভাবে JWT ব্যবহার করে
JSON ওয়েব টোকেন (JWT) হলো RFC7519- এ বর্ণিত একটি টোকেন স্ট্যান্ডার্ড। JWT একগুচ্ছ ক্লেইম স্বাক্ষর করার একটি উপায় প্রদান করে, যা JWT-এর প্রাপক দ্বারা নির্ভরযোগ্যভাবে যাচাই করা যায়।
Edge Microgateway, OAuth নিরাপত্তার জন্য বিয়ারার টোকেন হিসেবে JWT ব্যবহার করে। যখন আপনি Edge Microgateway-এর জন্য একটি OAuth টোকেন তৈরি করেন, তখন আপনি একটি JWT ফেরত পান। এরপর আপনি API কলের Authorization হেডারে সেই JWT ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
একটি নতুন JWT তৈরি করা হচ্ছে
আপনি edgemicro token কমান্ড অথবা একটি API ব্যবহার করে Edge Microgateway-এর জন্য একটি JWT তৈরি করতে পারেন। উদাহরণস্বরূপ:
edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
এই কমান্ডটি Apigee Edge-কে একটি JWT তৈরি করতে বলে, যা পরবর্তীতে API কল যাচাই করার জন্য ব্যবহার করা যেতে পারে। -i এবং -s প্যারামিটারগুলো হলো আপনার Apigee Edge অর্গানাইজেশনের অন্তর্ভুক্ত কোনো ডেভেলপার অ্যাপের কনজিউমার আইডি এবং সিক্রেট ভ্যালু।
অথবা, আপনি ম্যানেজমেন্ট এপিআই ব্যবহার করেও একটি JWT তৈরি করতে পারেন:
curl -i -X POST "http://org-env.apigee.net/edgemicro-auth/token" \ -H "Content-Type: application/json" \ -d '{ "client_id": "your consumer key", "client_secret": "your consumer secret", "grant_type": "client_credentials" }'
কোথায়:
- org হলো আপনার Edge অর্গানাইজেশনের নাম (আপনাকে অবশ্যই একজন অর্গ অ্যাডমিনিস্ট্রেটর হতে হবে)।
- env হলো আপনার অর্গের একটি পরিবেশ (যেমন "test" বা "prod")।
- client_id হলো আপনার পূর্বে তৈরি করা ডেভেলপার অ্যাপের কনজিউমার আইডি।
- client_secret হলো আপনার পূর্বে তৈরি করা ডেভেলপার অ্যাপের কনজিউমার সিক্রেট।
কী রোটেশন কী?
প্রাথমিকভাবে একটি JWT তৈরি করার কিছু সময় পরে, আপনার Edge এনক্রিপ্টেড KVM-এ সংরক্ষিত পাবলিক/প্রাইভেট কী পেয়ার পরিবর্তন করার প্রয়োজন হতে পারে। নতুন কী পেয়ার তৈরি করার এই প্রক্রিয়াটিকে কী রোটেশন বলা হয়। যখন আপনি কী রোটেশন করেন, তখন একটি নতুন প্রাইভেট/পাবলিক কী পেয়ার তৈরি হয় এবং আপনার Apigee Edge অর্গানাইজেশন/এনভায়রনমেন্টের "মাইক্রোগেটওয়ে" KVM-এ সংরক্ষিত হয়। এছাড়াও, পুরানো পাবলিক কী-টি তার আসল কী আইডি মান সহ সংরক্ষিত থাকে।
একটি JWT তৈরি করতে, Edge এনক্রিপ্টেড KVM-এ সংরক্ষিত তথ্য ব্যবহার করে। আপনি যখন প্রথমবার Edge মাইক্রোগেটওয়ে সেট আপ (কনফিগার) করেন, তখন microgateway নামক একটি KVM তৈরি করা হয় এবং কী (key) দিয়ে তা পূর্ণ করা হয়। KVM-এর কীগুলো একটি JWT-কে সাইন ও এনক্রিপ্ট করতে ব্যবহৃত হয়।
KVM কীগুলির মধ্যে রয়েছে:
private_key - JWT-তে স্বাক্ষর করতে ব্যবহৃত সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) RSA প্রাইভেট কী।
পাবলিক_কী - প্রাইভেট_কী দিয়ে স্বাক্ষরিত JWT-গুলো যাচাই করার জন্য ব্যবহৃত সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি) সার্টিফিকেট।
private_key_kid - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি করা) প্রাইভেট কী আইডি। এই কী আইডিটি private_key ভ্যালুর সাথে যুক্ত থাকে এবং কী রোটেশন সমর্থন করার জন্য ব্যবহৃত হয়।
public_key1_kid - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি করা) পাবলিক কী আইডি। এই কী-টি public_key1 ভ্যালুর সাথে যুক্ত থাকে এবং কী রোটেশন সমর্থন করার জন্য ব্যবহৃত হয়। এই ভ্যালুটি প্রাইভেট কী কিড-এর সমান।
public_key1 - সর্বশেষ (সবচেয়ে সম্প্রতি তৈরি করা) পাবলিক কী।
যখন আপনি কী রোটেশন করেন, তখন ম্যাপে বিদ্যমান কী ভ্যালুগুলো প্রতিস্থাপিত হয় এবং পুরোনো পাবলিক কীগুলো ধরে রাখার জন্য নতুন কী যোগ করা হয়। উদাহরণস্বরূপ:
public_key2_kid - পুরোনো পাবলিক কী আইডি। এই কী-টি public_key2 ভ্যালুর সাথে যুক্ত এবং কী রোটেশন সমর্থন করার জন্য ব্যবহৃত হয়।
public_key2 - পুরাতন পাবলিক কী।
যাচাইয়ের জন্য উপস্থাপিত JWT-গুলো নতুন পাবলিক কী ব্যবহার করে যাচাই করা হবে। যদি যাচাইকরণ ব্যর্থ হয়, তাহলে পুরোনো পাবলিক কী-টি ব্যবহার করা হবে, যতক্ষণ না সেটির মেয়াদ শেষ হয় (৩০ মিনিট পর)। এইভাবে, আপনি API ট্র্যাফিককে তাৎক্ষণিকভাবে ব্যাহত না করেই কী-গুলো "পরিবর্তন" করতে পারেন।
কী রোটেশন কীভাবে করবেন
এই অংশে কী রোটেশন কীভাবে করতে হয় তা ব্যাখ্যা করা হয়েছে।
আপনি যদি আপনার Edge Microgateway ইনস্ট্যান্সটি সংস্করণ 2.5.2-এর আগে কনফিগার করে থাকেন
যদি আপনি আপনার Edge Microgateway ইনস্ট্যান্সটি সংস্করণ 2.5.2-এর আগে কনফিগার করে থাকেন, তাহলে KVM এবং প্রমাণীকরণ নীতি আপগ্রেড করার জন্য আপনাকে অবশ্যই নিম্নলিখিত দুটি কমান্ড চালাতে হবে:
upgradekvm -o org -e env -u username
এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, KVM আপগ্রেড করা দেখুন।
পরবর্তী কমান্ডটি edgemicro-oauth প্রক্সিটিকে আপগ্রেড করে, যেটি আপনি Edge Microgateway কনফিগার করার সময় আপনার Apigee অর্গে স্থাপন করা হয়েছিল। এই প্রক্সিটি টোকেন তৈরি করার জন্য প্রয়োজনীয় পরিষেবাগুলো সরবরাহ করে।
upgradeauth -o org -e env -u username
এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, edgemicro-auth প্রক্সি আপগ্রেড করা দেখুন।
কীগুলো ঘোরানো
আপনার ~/.edgemicro/org-env-config.yaml ফাইলে নিম্নলিখিত লাইনটি যোগ করুন, যেখানে আপনাকে অবশ্যই সেই একই অর্গানাইজেশন এবং এনভায়রনমেন্ট উল্লেখ করতে হবে যা আপনি মাইক্রোগেটওয়ে ব্যবহারের জন্য কনফিগার করেছেন:
jwk_public_keys: 'https://org-env.apigee.net/edgemicro-auth/jwkPublicKeys'
কীগুলো ঘোরানোর জন্য কী রোটেশন কমান্ডটি চালান। (এই কমান্ড সম্পর্কে আরও তথ্যের জন্য, ‘কী ঘোরানো’ দেখুন।)
edgemicro rotatekey -o org -e env -u username -k kid_value
উদাহরণস্বরূপ:
edgemicro rotatekey -o jdoe -e test -u jdoe@google.com -k 2 current nodejs version is v12.5.0 current edgemicro version is 3.0.2 password: Checking if private key exists in the KVM... Checking for certificate... Found Certificate Generating New key/cert pair... Extract new public key Key Rotation successfully completed!
The -k parameter specifies a Key ID (kid). This ID is used to match a specific key. Edge Microgateway uses this value to choose among a set of keys during key rotation. For more information, see Section 4.5 of the JSON Web Key specification .
After key rotation, Edge returns multiple keys to Edge Microgateway. Note in the following example, each key has a unique "kid" (Key ID) value. The microgateway then uses these keys to validate authorization tokens. If the token validation fails, the microgateway looks to see if there is an older key in the key set and tries that key. The format of the returned keys is JSON Web Key (JWK). You can read about this format in RFC 7517 .
{
"keys": [
{
"kty": "RSA",
"n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
"e": "AQAB",
"kid": "2"
},
{
"kty": "RSA",
"n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
"e": "AQAB",
"kid": "1"
}
]
}Filtering downloaded proxies
By default, Edge Microgateway downloads all of the proxies in your Edge organization that start with the naming prefix "edgemicro_". You can change this default to download proxies whose names match a pattern.
- Open your Edge Micro config file:
~/.edgemicro/org-env-config.yaml - Add the proxyPattern element under edge_config. For example, the following pattern will download proxies such as edgemicro_foo, edgemicro_fast, and edgemicro_first.
edge_config: … proxyPattern: edgemicro_f*
Specifying products without API proxies
In Apigee Edge, you can create an API product that does not contain any API proxies. This product configuration allows an API key associated with that product to work for with any proxy deployed in your organization. As of version 2.5.4, Edge Microgateway supports this product configuration.
Debugging and troubleshooting
Connecting to a debugger
You can run Edge Microgateway with a debugger, such as node-inspector . This is useful for troubleshooting and debugging custom plugins.
- Restart Edge Microgateway in debug mode. To do this, add
DEBUG=*to the beginning of thestartcommand. For example:DEBUG=* edgemicro start -o myorg -e test -k db4e9e8a95aa7fabfdeacbb1169d0a8cbe42bec19c6b98129e02 -s 6e56af7c1b26dfe93dae78a735c8afc9796b077d105ae5618ce7ed - Start your debugger and set it to listen on the port number for the debugging process.
- You can now step through the Edge Microgateway code, set breakpoints, watch expressions, and so on.
You can specify standard Node.js flags related to debug mode. For example, --nolazy helps with debugging asynchronous code.
Checking log files
If you're having problems, be sure to examine the log files for execution details and error information. For details, see Managing log files .
Using API key security
API keys provide a simple mechanism for authenticating clients making requests to Edge Microgateway. You can obtain an API key by copying the Consumer Key (also called Client ID) value from an Apigee Edge product that includes the Edge Microgateway authentication proxy.
Caching of keys
API keys are exchanged for bearer tokens, which are cached. You can disable caching by setting the Cache-Control: no-cache header on incoming requests to Edge Microgateway.
Using an API key
You can pass the API key in an API request either as a query parameter or in a header. By default, the header and query param name are both x-api-key .
Query parameter example:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
Header example:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
Configuring the API key name
By default, x-api-key is the name used for both the API key header and query parameter. You can change this default in the configuration file, as explained in Making configuration changes . For example, to change the name to apiKey :
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
In this example, both the query parameter and header name are changed to apiKey . The name x-api-key will no longer work in either case. See also Making configuration changes .
উদাহরণস্বরূপ:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
For more information about using API keys with proxy requests, see Secure Edge Microgateway .
Enable upstream response codes
By default, the oauth plugin returns only 4xx error status codes if the response is not a 200 status. You can change this behavior so that it always returns the exact 4xx or 5xx code, depending on the error. (Released in version 3.0.7)
To enable this feature, add the oauth.useUpstreamResponse: true property to your Edge Microgateway configuration. For example:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
Using OAuth2 token security
This section explains how to get OAuth2 access tokens and refresh tokens. Access tokens are used to make secure API calls through the microgateway. Refresh tokens are used to obtain new access tokens.
How to get an access token
This section explains how to use the edgemicro-auth proxy to get an access token.
You can also get an access token using the edgemicro token CLI command. For details on the CLI, see Managing tokens .
API 1: Send credentials as body parameters
Substitute your org and environment names in the URL, and substitute the Consumer Id and Consumer Secret values obtained from a developer app on Apigee Edge for the client_id and client_secret body parameters:
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2: Send credentials in a Basic Auth header
Send the client credentials as a Basic Authentication header and the grant_type as a form parameter. This command form is also discussed in RFC 6749: The OAuth 2.0 Authorization Framework .
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
Sample output
The API returns a JSON response. Note that there's no difference between thetoken and access_token properties. You can use either one. { "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": "108000" }
How to get a refresh token
To get a refresh token, make an API call to the /token endpoint of the edgemicro-auth proxy. You MUST make this API call with the password grant type. The following steps walk through the process.
- Get an access and refresh token with the
/tokenAPI. Note that the grant type ispassword:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'The API returns an access token and a refresh token. The response looks similar to this:
{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": "108000", "refresh_token": "your-refresh-token", "refresh_token_expires_in": "431999", "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" } - You can now use the refresh token to get a new access token by calling the
/refreshendpoint of the same API. For example:curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'The API returns a new access token. The response looks similar to this:
{ "token": "your-new-access-token" }
চিরস্থায়ী পর্যবেক্ষণ
Forever is a Node.js tool that automatically restarts a Node.js app in case the process goes down or has an error. Edge Microgateway has a forever.json file that you can configure to control how many times and with what intervals Edge Microgateway should be restarted. This file configures a Forever service called forever-monitor , which manages Forever programmatically.
You can find the forever.json file in the Edge Microgateway root install directory. See Where is Edge Microgateway installed . For details on the configuration options, refer to the forever-monitor documentation .
The edgemicro forever command includes flags that let you specify the location of the forever.json file (the -f flag), and start/stop the Forever monitoring process (the -a flag). For example:
edgemicro forever -f ~/mydir/forever.json -a start
For more information, see the Forever monitoring in the CLI reference.
Specifying a config file endpoint
If you run multiple Edge Microgateway instances, you may wish to manage their configurations from a single location. You can do this by specifying an HTTP endpoint where Edge Micro can download its configuration file. You can specify this endpoint when you start Edge Micro using the -u flag.
উদাহরণস্বরূপ:
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
where the mgconfig endpoint returns the contents of your configuration file. This is the file that, by default, is located in ~/.edgemicro and has the naming convention: org-env-config.yaml .
Disabling TCP connection data buffering
You can use the nodelay configuration attribute to disable data buffering for TCP connections used by Edge Microgateway.
By default TCP connections use the Nagle algorithm to buffer data before sending it off. Setting nodelay to true , disables this behavior (data will immediately fire off data each time socket.write() is called). See also the Node.js documentation for more details.
To enable nodelay , edit the Edge Micro config file as follows:
edgemicro:
nodelay: true
port: 8000
max_connections: 1000
config_change_poll_interval: 600
logging:
level: error
dir: /var/tmp
stats_log_interval: 60
rotate_interval: 24
Running Edge Microgateway in standalone mode
You can run Edge Microgateway disconnected completely from any Apigee Edge dependency. This scenario, called standalone mode, lets you run and test Edge Microgateway without an Internet connection.
In standalone mode, the following features do not work, as they require connection to Apigee Edge:
- OAuth and API key
- কোটা
- বিশ্লেষণ
On the other hand, custom plugins and spike arrest work normally, because they do not require a connection to Apigee Edge. In addition, a new plugin called extauth lets you authorize API calls to the microgateway with a JWT while in standalone mode.
Configuring and starting the gateway
To run Edge Microgateway in standalone mode:
- Be sure that you have Edge Microgateway version 3.0.1 or later installed. If not, you must execute the following command to upgrade to the latest version:
npm install -g edgemicro
If you need help, see Installing Edge Microgateway .
- Create a configuration file named as follows:
$HOME/.edgemicro/org_name-env_name-config.yamlউদাহরণস্বরূপ:
vi $HOME/.edgemicro/foo-bar-config.yaml
- Paste the following code into the file:
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0 - Export the following environment variable with the value "1":
export EDGEMICRO_LOCAL=1
- Execute the following
startcommand, where you provide values to instantiate the local proxy:edgemicro start -o org_name -e environment_name -a local_proxy_name \ -v local_proxy_version -t target_url -b base_path
কোথায়:
- your_org is the "org" name that you used in the configuration file name.
- your_environment is the "env" name that you used in the configuration file name.
- local_proxy_name is the name of the local proxy that will be created. You can use any name you want.
- local_proxy_version is the version number for the proxy.
- target_url is the URL for the target of the proxy. (The target is the service that the proxy calls.)
- base_path is the base path of the proxy. This value must start with a forward slash. For a root base path, specify just a forward slash; for example, "/".
উদাহরণস্বরূপ:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Test the configuration.
curl http://localhost:8000/echo { "error" : "missing_authorization" }Because the
extauthplugin is in thefoo-bar-config.yamlfile, you get a "missing_authorization" error. This plugin validates a JWT that must be present in the Authorization header of the API call. In the next section, you will obtain a JWT that will allow API calls to go through without the error.
Example: Obtaining an authorization token
The following example shows how to obtain a JWT from the Edge Microgateway JWT endpoint on Apigee Edge ( edgemicro-auth/jwkPublicKeys ). This endpoint is deployed when you perform a standard setup and configuration of Edge Microgateway. To obtain the JWT from the Apigee endpoint, you must first do the standard Edge Microgateway setup, and be connected to the Internet. The Apigee endpoint is used here for example purposes only and is not required. You can use another JWT token endpoint if you wish. If you do, then you'll need to obtain the JWT using the API provided for that endpoint.
The following steps explain how to get a token using the edgemicro-auth/jwkPublicKeys endpoint:.
- You must perform a standard setup and configuration of Edge Microgateway to deploy the
edgemicro-authproxy to your organization/environment on Apigee Edge. If you did this step previously, you do not need to repeat it. - If you deployed Edge Microgateway to Apigee Cloud, you must be connected to the Internet so that you can obtain a JWT from this endpoint.
- Stop Edge Microgateway:
edgemicro stop
- In the configuration file you created previously (
$HOME/.edgemicro/ org - env-config.yaml), point theextauth:publickey_urlattribute to theedgemicro-auth/jwkPublicKeysendpoint in your Apigee Edge organization/environment. For example:extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
- Restart Edge Microgateway as you did previously, using the org/env names you used in the config file name. For example:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Get a JWT token from the authorization endpoint. Because you are using the
edgemicro-auth/jwkPublicKeysendpoint, you can use this CLI command:
You can generate a JWT for Edge Microgateway using the edgemicro token command or an API. For example:
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
কোথায়:
- your_org is the name of your Apigee organization for which you previously configured Edge Microgateway.
- your_env is an environment in the organization.
- The
ioption specifies the Consumer Key from a developer app that has a product that includes theedgemicro-authproxy. - The
soption specifies the Consumer Secret from a developer app that has a product that includes theedgemicro-authproxy.
This command asks Apigee Edge to generate a JWT that can then be used to verify API calls.
See also Generate a token .Test the standalone configuration
To test the configuration, call the API with the token added in the Authorization header as follows:
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
উদাহরণ:
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
Example output:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Using local proxy mode
In local proxy mode, Edge Microgateway does not require a microgateway-aware proxy to be deployed on Apigee Edge. Instead, you configure a "local proxy" by providing a local proxy name, basepath, and target URL when you start the microgateway. API calls to the microgateway are then sent to the target URL of the local proxy. In all other respects, local proxy mode works exactly the same as running Edge Microgateway in its normal mode. Authentication works the same, as do spike arrest and quota enforcement, custom plugins, and so on.
Use case and example
Local proxy mode is useful when you only need to associate one single proxy with an Edge Microgateway instance. For example, you can inject Edge Microgateway into Kubernetes as a sidecar proxy, where a microgateway and a service each run in a single pod, and where the microgateway manages traffic to and from its companion service. The following figure illustrates this architecture where Edge Microgateway functions as a sidecar proxy in a Kubernetes cluster. Each microgateway instance talks only to a single endpoint on its companion service:

A benefit of this style of architecture is that Edge Microgateway provides API management for individual services deployed to a container environment, such as a Kubernetes cluster.
Configuring local proxy mode
To configure Edge Microgateway to run in local proxy mode, follow these steps:
- Be sure that you have Edge Microgateway version 3.0.1 or later installed. If not, you must execute the following command to upgrade to the latest version:
npm install -g edgemicro
If you need help, see Installing Edge Microgateway .
- Run
edgemicro initto set up your local configuration environment, exactly as you would in a typical Edge Microgateway setup. See also Configure Edge Microgateway . - Run
edgemicro configure, as you would in a typical Edge Microgateway setup procedure. For example:edgemicro configure -o your_org -e your_env -u your_apigee_username
This command deploys the edgemicro-auth policy to Edge and returns a key and secret that you will need to start the microgateway. If you need help, see Configure Edge Microgateway .
- On Apigee Edge, create an API product and with the following mandatory configuration requirements (you can manage all other configurations as you wish):
- You must add the edgemicro-auth proxy to the product. This proxy was deployed automatically when you ran
edgemicro configure. - You must provide a resource path. Apigee recommends adding this path to the product:
/**. To learn more, see Configuring the behavior of the resource path . See also Create API products in the Edge documentation.
- You must add the edgemicro-auth proxy to the product. This proxy was deployed automatically when you ran
On Apigee Edge, create a developer, or you can use an existing developer if you wish. For help, see Adding developers using the Edge management UI .
- On Apigee Edge, create a developer app. You must add the API product you just created to the app. For help, see Registering an app in the Edge management UI .
- On the machine where Edge Microgateway is installed, export the following environment variable with the value "1".
export EDGEMICRO_LOCAL_PROXY=1
- Execute the following
startcommand:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_pathকোথায়:
- your_org is your Apigee organization.
- your_environment is an environment in your organization.
- your_key is the key that was returned when you ran
edgemicro configure. - your_secret is the secret that was returned when you ran
edgemicro configure. - local_proxy_name is the name of the local proxy that will be created.
- local_proxy_version is the version number for the proxy.
- target_url is the URL for the target of the proxy (the service the proxy will call).
- base_path is the base path of the proxy. This value must start with a forward slash. For a root base path, specify just a forward slash; for example, "/".
উদাহরণস্বরূপ:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
Testing the configuration
You can test the local proxy configuration by calling the proxy endpoint. For example, if you specified a basepath of /echo , you can call the proxy as follows:
curl http://localhost:8000/echo
{
"error" : "missing_authorization",
"error_description" : "Missing Authorization header"
}This initial API call produced an error because you did not provide a valid API key. You can find the key in the Developer app you created previously. Open the app in the Edge UI, copy the Consumer Key, and use that key as follows:
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
উদাহরণস্বরূপ:
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
Example output:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}